LMH*_*LMH 10 ruby-on-rails mongodb mongoid
我们有一个带有嵌入式项目的模型条目:
class Entry
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Spacial::Document
embeds_many :items, cascade_callbacks: true
...
class Item
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Spacial::Document
embedded_in :entry
...
Run Code Online (Sandbox Code Playgroud)
如果我按项目ID直接查询mongo:
{"items._id" : ObjectId("50536b18baa072000f000360")}
Run Code Online (Sandbox Code Playgroud)
它返回条目:
505363b36181ce00020006b1 {"created_at":"2012-09-14T17:04:51Z","items":[{"_ id":"50536b1a2b17b3 ...
然而,当我通过Mongoid查询时:
irb(main):002:0> Entry.where('items._id' => '50536b18baa072000f000360')[0]
=> nil
Run Code Online (Sandbox Code Playgroud)
所有其他查询都有效(对于项目和输入字段的其他字段).但不是为了id.
我们正在运行mongoid(2.4.12).
LMH*_*LMH 19
显然你必须将ID包装在BSON :: ObjectId()中,所以:
Entry.where('items._id' => BSON::ObjectId('50536b18baa072000f000360'))[0]
Run Code Online (Sandbox Code Playgroud)
否则mongo将无法返回结果.
小智 5
这适用于Mongoid 4.0.0.beta1:
Entry.where('items._id' => BSON::ObjectId.from_string('50536b18baa072000f000360'))
Run Code Online (Sandbox Code Playgroud)
这是文档的链接.
http://api.mongodb.org/ruby/current/BSON/ObjectId.html#from_string-class_method
| 归档时间: |
|
| 查看次数: |
4271 次 |
| 最近记录: |