2013-08-28 3 views
1

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

{ 
    _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) 

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

ответ

2

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

@results = Model.where 'association_chain.id' => BSON::ObjectId('521d11014903728f8d000005') 
+0

'ObjectId' не метод – Andrew

+0

... но изменить его на' BSON :: ObjectId() 'исправили проблему. Я уточню ваш ответ. Благодаря! – Andrew

+0

Спасибо за исправление моего ответа! – nachbar

Смежные вопросы