如何查询集合以返回其中的所有文档,这些文档在子字段“list”中有一个数组,至少有一个元素带有“time”> 100,并在“列表”中返回满足此条件的所有元素,而不仅仅是第一个。 $和$ elemMatch只返回第一个,但我想要它们全部。我该怎么做?
答案 0 :(得分: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
)
您必须根据您的确切数据结构更改此查询,但这是一般的想法。