为了使用 MongoID/Rails 3查找包含嵌入文档的根文档,我需要以这种方式进行查询:
QuoteRequest.where( "order_request_items._id" => BSON::ObjectID(params[:id]) ).first
有没有办法在不使用 BSON::ObjectID 的情况下进行查询?
谢谢!
为了使用 MongoID/Rails 3查找包含嵌入文档的根文档,我需要以这种方式进行查询:
QuoteRequest.where( "order_request_items._id" => BSON::ObjectID(params[:id]) ).first
有没有办法在不使用 BSON::ObjectID 的情况下进行查询?
谢谢!
这是一个错误,ID 应该由 Mongoid 自动转换。你应该在 github 上开一张票:http: //github.com/mongoid/mongoid/issues
我不是 MongoID/Rails 用户,但我猜你不能。
即使在 Mongo shell 中,ObjectId()
如果要比较 ObjectID,也必须使用。像这样的东西不会返回任何结果:
db.foo.find({_id: "4c7ca651db48000000002277"})
您必须从字符串创建一个实际的 ObjectID 才能获得结果:
db.foo.find({_id: ObjectId("4c7ca651db48000000002277")})
MongoID 显然不会自动将您的输入转换为 ObjectID。但也许有一种方法可以告诉 MongoID 它应该始终将哪些字段转换为 ObjectID?然后你就可以省略使用BSON::ObjectID
.