【发布时间】:2011-06-14 10:56:32
【问题描述】:
我想使用 MongoDB 的 addToSet 方法,但是 Mongoid 目前还不支持这个。有没有办法从我的 Rails 模型中直接访问 MongoDB 驱动程序?
【问题讨论】:
标签: ruby-on-rails-3 mongodb mongoid
我想使用 MongoDB 的 addToSet 方法,但是 Mongoid 目前还不支持这个。有没有办法从我的 Rails 模型中直接访问 MongoDB 驱动程序?
【问题讨论】:
标签: ruby-on-rails-3 mongodb mongoid
直到并包括 Mongoid 2.4,您可以使用以下方式访问数据库对象
db = Mongoid.master
【讨论】:
MyModel.collection.database 可以
我问了这个问题on Mongoid group,这是最好的回答:
假设您的模型对象是 Mongoid::Document,只需调用 "db" 方法来获取 Mongoid 的 Mongo::DB 对象的句柄 在引擎盖下使用。
http://rdoc.info/github/mongoid/mongoid/master/Mongoid/Collections/Cl...
从那里,您可以直接使用 MongoDB Ruby 驱动程序 API。
此外,您可以使用 ModelName.collection 访问记录集合。
【讨论】:
db 方法已退出,collection 方法已加入!
您可以使用来自 mongodb 的 mongo-ruby-driver gem:
https://github.com/mongodb/mongo-ruby-driver
查看api中的更新方法:
http://api.mongodb.org/ruby/1.2.0/Mongo/Collection.html#update-instance_method
而这个选项可能就是你想要使用的addToSet:
(Boolean) :upsert — default: +false+ — if true, performs an upsert (update or insert)
【讨论】: