Как я могу запросить коллекцию, чтобы вернуть мне все документы в ней, которые имеют в подполе «список», который представляет собой массив, по крайней мере один элемент с «временем», > 100, и верните меня в «список» всех элементов, удовлетворяющих этому условию, а не только первого. $ и $ elemMatch возвращает только первый, но я хочу их всех. Как мне это сделать?Документы возврата Mongodb И элементы массива, соответствующие запросу
0
A
ответ
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
)
Вы должны изменить этот запрос, основанный на вашей точной структуры данных, но это общая идея.
$ Рассчитайте, как структура агрегации является способом – Sammaye