Porównanie agregacji MongoDB: grupa (), grupa $ i MapReduce

Jestem nieco zdezorientowany, kiedy używać grupy (), agregować z $ group lub mapreduce. Przeczytałem dokumentację pod adresemhttp://www.mongodb.org/display/DOCS/Aggregation dla grupy (),http://docs.mongodb.org/manual/reference/aggregation/group/#_S_group for $ group .. Czy sharding jest jedyną sytuacją, w której grupa () nie działa? Mam też wrażenie, że grupa $ jest potężniejsza niż grupa (), ponieważ może być używana w połączeniu z innymi operatorami potoków z platformy agregacji. Jak porównać grupę $ z mapreduce? Czytałem gdzieś, że nie generuje żadnej tymczasowej kolekcji, podczas gdy mapreduce tak. Czy tak jest?
Czy ktoś może przedstawić ilustrację lub poprowadzić mnie do linku, w którym te trzy pojęcia są wyjaśnione razem, biorąc te same przykładowe dane, dzięki czemu mogę je łatwo porównać?

EDYTOWAĆ:
Byłoby również wspaniale, gdybyś mógł wskazać coś nowego w tych poleceniach od czasu pojawienia się nowej wersji 2.2.

questionAnswers(1)

yourAnswerToTheQuestion