BSON :: ObjectId vs Mongo :: ObjectID

在在线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之间的区别是什么?我需要做些什么来使后者工作(我真的需要)吗?

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请求来更新它:

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