MongoDB:按键迭代集合?

标签 mongodb indexing key

如何迭代与 MongoDB 集合中指定键的每个值匹配的所有文档?

例如对于包含以下内容的集合:

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

...索引为 { keyA: 1 } 的情况下,如何对其中 keyA:1keyA: 的所有文档运行操作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/

相关文章:

mysql - my.cnf 中的不同设置导致 "max key length is 1000 bytes"错误

ruby-on-rails - 递归嵌入和 Mongoid - 父级不保存

node.js - 在 Node 中运行时或数据库中存储 session

Solr索引时间增加VS查询时间增加?

Mysql 多列全文索引 & "AND operator"

javascript - 无框架切换关键事件

mongodb - MongoDB Atlas 和 MongoDB Atlas for AWS 有什么区别

mongodb - MongoDB : how to use refs to documents in other collections 中缺少类似连接查询的数据库设计

MySQL 全文索引搜索返回错误结果

mysql - 使用未使用的主键