Du kan inte skapa ett index som fungerar som du har beskrivit det. Det finns inget sätt att "indexera" en av utdata från ett pipelinesteg när du kör en aggregering.
Det finns några aggregeringsoperatorer som kan arbeta med MongoDB samlingsindex .
För närvarande inkluderar de:$match
, $sort
, $limit
och $skip
.
Som $match
är en av dem kan prestandan för aggregeringsfrågan du har skrivit gynnas av att deklarera ett sammansatt index på de två fälten, särskilt som du har placerat $match
korrekt. i början av pipelinen:
db.theCollection.ensureIndex({user: 1, type: 1})
$group
steg i pipelinen kommer att ta resultaten från $match
och helst vara relativt snabb. :)