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 の違いは何ですか? また、後者を機能させるにはどうすればよいでしょうか (そして、本当に必要なのでしょうか)?

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
4

1 に答える 1

2

ここで関連する Ruby ドライバーへの 2 つの変更があります。1 つ目は次のとおりです。

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

于 2012-02-22T11:05:31.267 に答える