2010-08-30 20 views
1

獲取Mongoid爲了找到包含使用MongoID/Rails 3中,我需要做我查詢這種方式嵌入文檔根文件:從參數數組

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

有沒有辦法查詢,而不使用BSON :: ObjectID?

謝謝!

回答

0

我不是MongoID/Rails用戶,但我的猜測是你不能。

即使在Mongo shell中,如果要比較ObjectID,您也必須使用ObjectId()。這樣的事情將不會返回任何結果:

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

你必須爲了得到結果,以創建從字符串的實際對象ID:

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

MongoID顯然不會自動轉換輸入到ObjectIDs。但也許有一種方法可以告訴MongoID哪些字段應該始終轉換爲ObjectIDs?那麼你就可以省略使用BSON::ObjectID

+0

我在想MongoID應該自動將ID轉換成ObjectID。在做Model.find(「4c7ca651db48000000002277」)時,Rails會這樣做,但在進行條件搜索時需要使用BSON :: ObjectID(params [:id])。 – 2010-08-31 14:07:37