BSON::ObjectId与Mongo::ObjectID的区别

3
在线API中,他们提到了Mongo::ObjectID
我已经使用了require 'mongo',但是仍然无法找到它。例如,我需要通过其ID查找对象,我正在执行:
mongo_db['post'].find({_id: Mongo::ObjectID(params[:id])}).next

看起来找不到Mongo::ObjectID,导致出现了NoMethodError - undefined method ``ObjectID' for Mongo:Module:

所以经过一些时间后,我开始require 'bson'并执行

mongo_db['post'].find({_id: BSON::ObjectId(params[:id])}).next

它有效了!

BSON::ObjectId和Mongo::ObjectID有什么区别,我需要做些什么才能使后者起作用(我真的需要吗)?

附注:我已经得到了

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

在mongo gem中,“ObjectID”的唯一提及是在文档中,因此我怀疑Mongo::ObjectID是旧版本遗留下来的,没有人更新文档;我只检查了1.5.2和1.3.1,因为这是我手头所有的东西。我在我的MongoDB事务中使用BSON :: ObjectId。 - mu is too short
1个回答

2
这里有两个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

当然,真正的问题是老旧且复杂的文档,因此我已经提交了一个拉取请求来更新它:

https://github.com/mongodb/mongo-ruby-driver/pull/90


只是提醒一下 - 拉取请求已合并 - 好耶! - Adam Comerford

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接