1

MongoID / Rails 3を使用して埋め込みドキュメントを含むルートドキュメントを見つけるには、次のようにクエリを実行する必要があります。

QuoteRequest.where( "order_request_items._id" => BSON::ObjectID(params[:id]) ).first

BSON :: ObjectIDを使用せずにクエリを実行する方法はありますか?

ありがとう!

4

2 に答える 2

0

私は MongoID/Rails のユーザーではありませんが、あなたにはできないと思います。

ObjectId()ObjectID を比較する場合は、Mongo シェルでも使用する必要があります。次のようなものは結果を返しません。

db.foo.find({_id: "4c7ca651db48000000002277"})

結果を取得するには、文字列から実際の ObjectID を作成する必要があります。

db.foo.find({_id: ObjectId("4c7ca651db48000000002277")})

MongoID は、入力を自動的に ObjectID に変換しないようです。しかし、MongoID に、どのフィールドを常に ObjectID に変換する必要があるかを伝える方法があるのではないでしょうか? その後、 の使用を省略できますBSON::ObjectID

于 2010-08-31T07:07:41.083 に答える
0

これはバグです。ID は Mongoid によって自動的に変換されるはずです。github でチケットを開く必要があります: http://github.com/mongoid/mongoid/issues

于 2010-09-24T15:22:50.917 に答える