Mongodb返回文档和匹配查询的数组元素

时间:2013-08-24 16:38:32

标签: mongodb node-mongodb-native

如何查询集合以返回其中的所有文档,这些文档在子字段“list”中有一个数组,至少有一个元素带有“time”> 100,并在“列表”中返回满足此条件的所有元素,而不仅仅是第一个。 $和$ elemMatch只返回第一个,但我想要它们全部。我该怎么做?

1 个答案:

答案 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
)

您必须根据您的确切数据结构更改此查询,但这是一般的想法。