Mongoid не может найти документ по вложенному идентификатору

У меня есть коллекция с документами, которые выглядят примерно так:

{
    _id: ObjectId("521d11014903728f8d000006"),
    association_chain: [
        {
            name: "Foobar",
            id: ObjectId("521d11014903728f8d000005")
        }
    ],
    // etc...
}

Я могу искать по name атрибут с этим запросом:

@results = Model.where 'association_chain.name' => 'Foobar'

Это возвращает результаты, как ожидалось. Тем не менее, когда я пытаюсь найти с помощью id атрибут:

@results = Model.where 'association_chain.id' => '521d11014903728f8d000005'

Нет результатов Насколько я могу судить, запрос, который генерирует Mongoid, выглядит правильно:

MOPED: 127.0.0.1:27017 QUERY  database=x collection=x selector={"$query"=>{"association_chain.id"=>"521d11014903728f8d000005"}, "$orderby"=>{"created_at"=>-1}} flags=[] limit=25 skip=0 batch_size=nil fields=nil (244.7259ms)

Что я делаю неправильно?

1 ответ

Решение

Вы ищете строку. Попробуйте найти ObjectId, например

@results = Model.where 'association_chain.id' => BSON::ObjectId('521d11014903728f8d000005')
Другие вопросы по тегам