Существует структура моих документов MongoDB:Как получить определенный объект из массива объектов внутри конкретного документа MongoDB?
{
_id : "12345",
name : "foo",
object : {
array_of_objects : [{
id : 507,
name : "some name",
dt : "2012-06-27 16:35:50"
},{
id : 506
name : "some other name",
dt : "2012-06-21 16:09:05"
},
…
]
}
}
Мне нужно получить объект из array_of_objects с определенным идентификатором документа с указанным именем . Я использую PHP и попытался выполнить следующий код:
$collection->find(array('name' => 'foo', 'object.array_of_objects.id' => 507));
Он возвращает все элементы array_of_objects вместо элемента с идентификатором 507. После этого я пытаюсь сделать запрос с $ elemMatch:
$collection->find(array('name' => 'foo', 'object.array_of_objects' => array('$elemMatch' => array('id' => 507))));
Но оно было возвращено то же самое. :( My MongoDB version 2.0.6. Пожалуйста, помогите.
Минус из MongoDB: http://stackoverflow.com/questions/10042097/how-to-search-data-in-inner-array-in-mongodb –
@ Дэвид-Cheung спасибо! Итак, я постараюсь сделать это с помощью Mapreduce. – bibimij