Mongo聚合查询不使用索引

时间:2018-06-21 16:38:06

标签: mongodb aggregation-framework

假设我有一些订单。

{
  orderId: 23322,
  clientId: 1111
  otherFields: "sda"
}

{clientId:1}上有一个索引

我正在运行的查询是

db.orders.aggregate([
    {$group:{_id:"$clientId", count:{$sum:1}}},
    {$match:{count:{$gt:250}}}
])

这为什么使用COLLSCAN。为什么不只是INDEX?我想,也许是错误地,索引有点像Map,其中clientId是键,而订单列表是值。为什么这个查询不能只使用索引?

是否有一种方法可以仅对索引运行此查询?

1 个答案:

答案 0 :(得分:0)

目前,只有$match$sort运算符位于聚合管道的开始时才能利用索引。您可以read more about it here

此外,请检查以下密切相关的问题: Mongodb Aggregation Framework: Does $group use index?