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. :)