如何遍历与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/