2013-08-24 3 views
0

Как я могу запросить коллекцию, чтобы вернуть мне все документы в ней, которые имеют в подполе «список», который представляет собой массив, по крайней мере один элемент с «временем», > 100, и верните меня в «список» всех элементов, удовлетворяющих этому условию, а не только первого. $ и $ elemMatch возвращает только первый, но я хочу их всех. Как мне это сделать?Документы возврата Mongodb И элементы массива, соответствующие запросу

+1

$ Рассчитайте, как структура агрегации является способом – Sammaye

ответ

2

Да, aggregation framework поможет вам в этом. Что-то вроде этого запроса должно работать:

db.collection.aggregate( 
    { $unwind : "$list" }, // deconstruct the array 
    { $match : { list : { $gt : 100 } } }, // match based on your condition 
    { $group : { _id : "$_id", list : { $push : "$list" } } } // rebuild array 
) 

Вы должны изменить этот запрос, основанный на вашей точной структуры данных, но это общая идея.

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