Otrzymałem ważną i pomocną odpowiedź od grup Google. Chciałbym podzielić się z wami wszystkimi.
Ograniczenie nie dotyczy liczby dokumentów:ograniczenie dotyczy ilości pamięci używanej przez wynik końcowy (lub wynik pośredni).
A więc:jeśli agregujesz 200 000 dokumentów, ale wynik pasuje do wyniku 16 MB, to wszystko w porządku. Jeśli zbierzesz 100 dokumentów, a wynik nie zmieści się do 16 MB, otrzymasz błąd.
Podobnie, jeśli wykonasz sort() lub group() na wyniku pośrednim i ta operacja wymaga więcej niż 10% dostępnej pamięci RAM, otrzymasz błąd. Jest to tylko luźno związane z liczbą posiadanych dokumentów:jest to funkcja tego, jak duży jest dany etap potoku.
Limit 16 MB nie jest regulowany. Jest to maksymalny rozmiar dokumentu w MongoDB. Ponieważ struktura agregacji jest obecnie zaimplementowana jako polecenie, wynik agregacji musi zostać zwrócony w jednym dokumencie:stąd limit 16 MB.
zobacz to post