ruby-on-rails - 我应该学习哪种 MongoDB DSL?

标签 ruby-on-rails ruby mongodb dsl

我正在使用 MongoDB 和 Ruby。

我注意到有不同的 DSL:s。

与 MongoDB 客户端 (mongo) 一起使用的 Javascript DSL:

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

与 MongoDB 的 Ruby 驱动程序一起使用的 Ruby DSL:

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

然后是 MongoDB 的 MongoID/MongoMapper DSL:

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

问题:

  • MongoID/MongoMapper 构建在 Ruby DSL 之上,而 Ruby DSL 又构建在 MongoDB 客户端 DSL 之上,这对吗?

  • 我应该学习所有三种 DSL: 还是只是根据我想要的抽象级别进行选择?

  • 我有什么理由想学习/使用 MongoDB 客户端 DSL?我可以在脚本中使用它还是只是与其客户端(mongo)交互?

谢谢!

最佳答案

学习这三个。

  1. 当您想要测试查询或查找数据等时,尤其是在生产环境中,第一个将被大量使用。您可能希望使用 mongo 客户端来执行此类操作。
  2. 当驱动程序 DSL 不支持 mongo 上的功能时,使用第二个。例如:
    • 在某些阶段,当 mongoMapper 已受 mongo 1.5 支持时,您无法将 $or 运算符与 MongoMapper 一起使用
    • 上次我使用 mongoid 时,mongomapper 不支持映射到 GridFS,因此您需要使用驱动程序 API
    • 而我上次使用时,mongoid和mongomapper又不支持map-reduce,这种情况你必须使用驱动程序API
  3. MongoMapper 和 Mongoid 用于将域对象映射到 mongo 文档,在缺乏 ODM 的某些阶段,您必须有后备计划,即使用 mongo 驱动程序 API。

希望有帮助。

关于ruby-on-rails - 我应该学习哪种 MongoDB DSL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3561886/

相关文章:

ruby-on-rails - 如何正确读取,更重要的是,如何写入 ruby​​ on rails 中的 3 表连接

ruby - ActiveRecord迁移:unique => true being ignored?

node.js - MongoDB $lookup 在具有不同值的对象数组中

mongodb - mongod.service 启动失败 : Unit mongod. 找不到服务

ruby-on-rails - 我如何在 Ruby on Rails 中使用 GBP 英镑符号到货币方法?

ruby-on-rails - 没有要加载的文件 -- factory_girl

ruby-on-rails - 显示错误时访问模型的属性翻译

html - ruby on rails 为什么在 View 中加载 css 时布局没有改变?

ruby-on-rails - 延迟作业错误 : there is already one or more instance(s) of the program running

node.js - Nodejs + Mongodb : find data after aggregation