В online API они относятся к Mongo::ObjectID
.BSON :: ObjectId vs Mongo :: ObjectID
У меня есть require 'mongo'
, но все равно рубин не находит его. Например, мне нужно найти объект по идентификатору, и я делаю:
mongo_db['post'].find({_id: Mongo::ObjectID(params[:id])}).next
и кажется, что он не может найти Монго :: 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
Единственное упоминание о «ObjectID» в Монго драгоценный камень в документации, поэтому я подозреваю, что 'Монго :: ObjectID' некоторые остатки от старых версий и никто не обновил документацию; Я только проверял 1.5.2 и 1.3.1, так как это все, что у меня было. Я использую BSON :: ObjectId в своих материалах MongoDB. –