Du kan ikke oprette et indeks, der fungerer, som du har beskrevet det. Der er ikke en måde at "indeksere" et af output fra et pipelinetrin, når du kører en aggregering.
Der er nogle få aggregeringsoperatører, som kan arbejde med MongoDB samlingsindekser .
I øjeblikket inkluderer de:$match
, $sort
, $limit
, og $skip
.
Som $match
er en af dem, kan ydeevnen af den aggregeringsforespørgsel, du har skrevet, drage fordel af ved at erklære et sammensat indeks på de to felter, især da du har placeret $match
korrekt. i begyndelsen af pipelinen:
db.theCollection.ensureIndex({user: 1, type: 1})
$group
trin i pipelinen vil tage resultaterne fra $match
og ideelt set være relativt hurtig. :)