U kunt geen index maken die werkt zoals u deze hebt beschreven. Er is geen manier om een van de outputs van een pijplijnstap te "indexeren" bij het uitvoeren van een aggregatie.
Er zijn een paar aggregatie-operators waarmee kunnen werken MongoDB-verzamelingsindexen .
Momenteel omvatten ze:$match
, $sort
, $limit
, en $skip
.
Als $match
is er een van, de prestaties van de aggregatiequery die u hebt geschreven, kunnen profiteren door een samengestelde index op de twee velden te declareren, vooral omdat u de $match
correct hebt geplaatst aan het begin van de pijplijn:
db.theCollection.ensureIndex({user: 1, type: 1})
De $group
stap in de pijplijn zal de resultaten van de $match
en idealiter relatief snel zijn. :)