Какой DSL MongoDB я должен изучить? - PullRequest
2 голосов
/ 25 августа 2010

Я использую MongoDB и Ruby.

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

Javascript DSL, используемый с клиентом MongoDB (mongo):

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

Ruby DSL, используемый с драйвером Ruby для 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? Могу ли я использовать его в сценарии или он просто взаимодействует с клиентом (монго)?

Спасибо!

1 Ответ

3 голосов
/ 25 августа 2010

Изучите все три.

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

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

...