2010-08-24 5 views
2

Я использую MongoDB и Ruby.Какой DSL должен быть изучен?

Я заметил, что есть разные DSL: s.

Javascript DSL используется с клиентом MongoDB (Монго):

show dbs 
use my_db 
db.person.find({first_name: "Syd"}) 

Рубин DSL используется с драйвером Рубиновый для MongoDB:

connection = Mongo::Connection.new 
connection.database_names.each { |name| puts name } 
connection.database_info.each { |info| puts info.inspect} 
person.find({"hello" => "world"}) 

Тогда Mongoid/MongoMapper DSL для MongoDB:

Person.desc(:last_name).asc(:first_name) 
Person.descending(:last_name).ascending(:first_name) 
Person.all(:conditions => { :first_name => "Syd" }) 

Вопросы:

  • Правильно MongoID/MongoMapper построен на основе Ruby DSL, который построен на основе DSL клиента MongoDB?

  • Должен ли я изучать все три DSL: или просто сделать свой выбор в зависимости от уровня абстракции, который я хочу?

  • Есть ли причины, по которым я хотел бы изучить/использовать DSL-клиент MongoDB? Могу ли я использовать его в скрипте или просто интерактивно с его клиентом (mongo)?

Спасибо!

ответ

3

Узнать все три.

  1. Первый из них будет использоваться, когда вы хотите протестировать запрос или найти данные и т. Д., Особенно когда вы находитесь в производстве. Вы хотели бы использовать клиента mongo, чтобы делать такие вещи.
  2. Второй используется, когда DSL-драйвер не поддерживает функции на монго. например:
    • На каком-то этапе вы не можете использовать $or оператор с MongoMapper, когда он был уже поддерживается на Монго 1.5
    • В последний раз я использовал Mongoid и mongomapper не поддерживает отображение на GridFS, так что вы бы использовали драйвер API для этого
    • и в последний раз я использовал, Mongoid и mongomapper не поддерживают снова Map-Reduce вы должны использовать API драйвера для этой ситуации
  3. mongoMapper и Mongoid используются для отображения вашего объекта домена mongo, на каком-то этапе, где ODM отсутствует o f вы должны иметь резервный план, который должен использовать API-интерфейс драйвера mongo.

Надеюсь, что это поможет.

+0

Вы можете, но зачем вы хотите это сделать? Естественно использовать синтаксис Ruby. –

+0

Я знаю, просто из любопытства. Как мне это сделать? –

Смежные вопросы