Nemyslím si, že je to v současné době (2.6) možné udělat s jedním agregačním kanálem. Je těžké dát přesný argument, proč ne, ale v zásadě agregační kanál provádí transformace proudů dokumentů, jeden dokument po druhém. V potrubí není žádné povědomí o stavu samotného streamu, což je to, co potřebujete, abyste zjistili, že jste dosáhli limitu pro A, B atd. a potřebujete zahodit další dokumenty stejného typu. $group
spojuje více dokumentů dohromady a umožňuje jejich souhrnným hodnotám polí ovlivnit výsledný dokument skupiny ($sum
, $avg
, atd.). Možná to dává nějaký smysl, ale nutně to není přesné, protože existují jednoduché operace, které můžete přidat, aby bylo možné omezit na základě typů, např. přidání $push x
akumulátor do $group
to vloží hodnotu pouze v případě, že pole, do kterého se přesune, má méně než x prvků.
I kdybych měl způsob, jak to udělat, doporučoval bych udělat jen dvě agregace. Nechte to jednoduché.