如何遍历与MongoDB集合中指定键的每个值匹配的所有文档?
例如,对于包含以下内容的集合:

{ _id: ObjectId, keyA: 1 },
{ _id: ObjectId, keyA: 2 },
{ _id: ObjectId, keyA: 2 },

…索引为{ keyA: 1 }时,如何在所有keyA:1,然后keyA:2的文档上运行操作,依此类推?
具体来说,我想为每个keyA值运行一个count()文档。所以对于这个集合,等价于find({keyA:1}).count()find({keyA:2}).count(),等等。
更新:键是否被索引与它们的迭代方式无关,因此编辑标题和描述以使q/a更易于将来引用。

最佳答案

获取keya唯一值的分组计数的一个简单方法是在mongodb 2.2中使用新的Aggregation Framework
如:

db.coll.aggregate(
  { $group : {
     _id: "$keyA",
     count: { $sum : 1 }
  }}
)

…返回一个结果集,其中每个id都是keya的唯一值,并计算该值出现的次数:
{
    "result" : [
        {
            "_id" : 2,
            "count" : 2
        },
        {
            "_id" : 1,
            "count" : 1
        }
    ],
    "ok" : 1
}

关于mongodb - MongoDB:按键迭代收集?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12536592/

10-11 02:23