如何迭代与 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 唯一值的分组计数的更简单方法是使用新的 Aggregation Framework在 MongoDB 2.2 中:
例如:
db.coll.aggregate(
{ $group : {
_id: "$keyA",
count: { $sum : 1 }
}}
)
...返回一个结果集,其中每个 _id 都是 keyA 的唯一值,并计算该值出现的次数:
{
"result" : [
{
"_id" : 2,
"count" : 2
},
{
"_id" : 1,
"count" : 1
}
],
"ok" : 1
}
关于MongoDB:按键迭代集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12536592/