We have a model Entry with an embedded Item:
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
...
If i query mongo directly for an entry by item id:
{"items._id" : ObjectId("50536b18baa072000f000360")}
It returns the Entry:
505363b36181ce00020006b1
{“created_at”:”2012-09-14T17:04:51Z”,”items”:[{“_id”:”50536b1a2b17b3…
Yet when i query via Mongoid:
irb(main):002:0> Entry.where('items._id' => '50536b18baa072000f000360')[0]
=> nil
All other queries work (for other fields on items and for fields on entry). But not for id.
We’re running mongoid (2.4.12).
Apparently you have to wrap the ID in BSON::ObjectId(), so:
Otherwise mongo will sporatically not return the result.