Você não pode criar um índice que funcione da maneira que você o descreveu. Não há como "indexar" uma das saídas de uma etapa de pipeline ao executar uma agregação.
Existem alguns operadores de agregação que podem trabalhar Índices de coleção do MongoDB .
Atualmente, eles incluem:
$match
, $sort
, $limit
e $skip
. Como
$match
é um deles, o desempenho da consulta de agregação que você escreveu pode se beneficiar declarando um índice composto nos dois campos, especialmente porque você colocou corretamente o $match
no início do pipeline:db.theCollection.ensureIndex({user: 1, type: 1})
O
$group
etapa no pipeline levará os resultados do $match
e, idealmente, seja relativamente rápido. :)