Ik denk niet dat dit momenteel (2.6) mogelijk is met één aggregatiepijplijn. Het is moeilijk om een precies argument te geven waarom niet, maar in feite voert de aggregatiepijplijn transformaties uit van documentstromen, document voor document. Er is geen bewustzijn binnen de pijplijn van de staat van de stream zelf, en dat is wat je nodig hebt om te bepalen dat je de limiet voor A's, B's, enz. hebt bereikt en verdere documenten van hetzelfde type moet laten vallen. $group
brengt meerdere documenten samen en laat hun veldwaarden in totaal invloed hebben op het resulterende groepsdocument ($sum
, $avg
, enzovoort.). Misschien is dit logisch, maar het is noodzakelijkerwijs niet rigoureus omdat er eenvoudige bewerkingen zijn die u zou kunnen toevoegen om het mogelijk te maken om te beperken op basis van de typen, bijvoorbeeld het toevoegen van een $push x
accumulator naar $group
die de waarde alleen pusht als de array waarnaar wordt gepusht minder dan x elementen heeft.
Zelfs als ik een manier had om het te doen, zou ik aanraden om gewoon twee aggregaties te doen. Houd het simpel.