在online API他们指的是 Mongo::ObjectID
。
我有 require 'mongo'
但 ruby 仍然找不到它。例如,我需要通过它的 Id 找到一个对象,我正在做:
mongo_db['post'].find({_id: Mongo::ObjectID(params[:id])}).next
它似乎找不到 Mongo::ObjectID 并导致:NoMethodError - Mongo:Module 的未定义方法“ObjectID”:
所以一段时间后我开始要求'bson'
并做
mongo_db['post'].find({_id: BSON::ObjectId(params[:id])}).next
成功了!
那么 BSON::ObjectId 和 Mongo::ObjectID 之间有什么区别,我需要做什么才能使后者工作(我真的需要这样做)吗?
PS:我有
bson (1.5.2, 1.4.1)
Authors: Jim Menard, Mike Dirolf, Kyle Banker
Homepage: http://www.mongodb.org
Installed at (1.5.2): /usr/local/lib64/ruby/gems/1.9.1
(1.4.1): /usr/local/lib64/ruby/gems/1.9.1
Ruby implementation of BSON
mongo (1.5.2, 1.4.1)
Authors: Jim Menard, Mike Dirolf, Kyle Banker
Homepage: http://www.mongodb.org
Installed at (1.5.2): /usr/local/lib64/ruby/gems/1.9.1
(1.4.1): /usr/local/lib64/ruby/gems/1.9.1
Ruby driver for the MongoDB
最佳答案
与此处相关的 Ruby 驱动程序有两个更改。第一个是:
https://jira.mongodb.org/browse/RUBY-158
将 ObjectID 移动到“驼峰式”版本的 ObjectId。从 Mongo 命名空间到 BSON 命名空间的切换发生得更早 (0.2),请在此处查看历史文件中的最后一个条目:
https://github.com/mongodb/mongo-ruby-driver/blob/master/docs/HISTORY.md
当然,真正的问题是旧的和粗糙的文档,所以我提交了一个 pull request 来更新它:
关于ruby - BSON::ObjectId 与 Mongo::ObjectID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9386533/