【发布时间】:2017-02-13 23:19:08
【问题描述】:
使用 mongo 3.2。
试图查找信息,mongodb聚合是否使用稀疏索引。
-
https://docs.mongodb.com/manual/core/aggregation-pipeline-optimization/
当放置在管道的开头时,$match 操作使用合适的索引来仅扫描集合中的匹配文档。
-
https://docs.mongodb.com/manual/core/index-sparse/
即使按索引字段排序,MongoDB 也不会选择稀疏索引来完成查询以返回完整的结果:...要使用稀疏索引,请使用hint() 显式指定索引
所以,问题是,如果我有稀疏索引,mongo 聚合管道是否会匹配索引字段?
【问题讨论】:
-
嗨,聚合框架可以选择添加
explain选项 - 如果您已经有示例数据和索引,只需添加explain选项,如下所示:db.orders.aggregate( [ { $match: { status: "A" } }, { $group: { _id: "$cust_id", total: { $sum: "$amount" } } }, { $sort: { total: -1 } } ], { explain: true } )它会让您知道它是否使用它。 -
@cohenjo explain in aggregation 不提供 executionStats,这就是为什么无法使用稀疏索引检查是否是聚合。
标签: mongodb indexing aggregation-framework