1

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

4

1 回答 1

3

是的,聚合框架将帮助您做到这一点。像这样的查询应该可以工作:

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
)

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

于 2013-09-19T19:00:27.013 回答