2012-02-21 3 views
2

В 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 
+0

Единственное упоминание о «ObjectID» в Монго драгоценный камень в документации, поэтому я подозреваю, что 'Монго :: ObjectID' некоторые остатки от старых версий и никто не обновил документацию; Я только проверял 1.5.2 и 1.3.1, так как это все, что у меня было. Я использую BSON :: ObjectId в своих материалах MongoDB. –

ответ

1

Есть два изменения в драйвере рубинового, которые имеют отношение здесь. Первый:

https://jira.mongodb.org/browse/RUBY-158

взметнувший ObjectID в "верблюд случае" версия ObjectId. Переход от пространства имен Монго в пространстве имен BSON произошло гораздо раньше (0.2), увидеть последнюю запись в файл истории здесь:

https://github.com/mongodb/mongo-ruby-driver/blob/master/docs/HISTORY.md

Реальная проблема, конечно, является старой и crufty документации, так Я подал заявку на нагрузочный обновить его:

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

+0

просто для того, чтобы отметить - запрос тяги был объединен - ​​woo! –

Смежные вопросы