假设我有一些订单。
{
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是键,而订单列表是值。为什么这个查询不能只使用索引?
是否有一种方法可以仅对索引运行此查询?
答案 0 :(得分:0)
目前,只有$match
和$sort
运算符位于聚合管道的开始时才能利用索引。您可以read more about it here。
此外,请检查以下密切相关的问题: Mongodb Aggregation Framework: Does $group use index?