Saya tidak berpikir ini saat ini (2.6) mungkin dilakukan dengan satu pipa agregasi. Sulit untuk memberikan argumen yang tepat mengapa tidak, tetapi pada dasarnya pipa agregasi melakukan transformasi aliran dokumen, satu dokumen pada satu waktu. Tidak ada kesadaran di dalam saluran tentang status aliran itu sendiri, yang Anda perlukan untuk menentukan bahwa Anda telah mencapai batas untuk A, B, dll dan perlu menjatuhkan dokumen lebih lanjut dari jenis yang sama. $group
memang menyatukan beberapa dokumen dan memungkinkan nilai bidangnya secara agregat memengaruhi dokumen grup yang dihasilkan ($sum
, $avg
, dll.). Mungkin ini masuk akal, tetapi tidak harus ketat karena ada operasi sederhana yang dapat Anda tambahkan untuk memungkinkan pembatasan berdasarkan jenisnya, mis., menambahkan $push x
akumulator ke $group
yang hanya mendorong nilai jika array yang didorong memiliki lebih sedikit dari x elemen.
Bahkan jika saya memiliki cara untuk melakukannya, saya akan merekomendasikan hanya melakukan dua agregasi. Tetap sederhana.