Сравнение агрегации MongoDB: group (), $ group и MapReduce

Я несколько озадачен тем, когда использовать group (), агрегировать с $ group или mapreduce. Я читаю документацию наhttp://www.mongodb.org/display/DOCS/Aggregation для группы (),http://docs.mongodb.org/manual/reference/aggregation/group/#_S_group для $ group. Является ли sharding единственной ситуацией, когда group () не работает? Кроме того, у меня возникает ощущение, что $ group является более мощным, чем group (), потому что его можно использовать вместе с другими операторами конвейера из структуры агрегации. Как $ group сравнивается с mapreduce? Я где-то читал, что он не генерирует какую-либо временную коллекцию, в то время как mapreduce это делает. Это так?
Может ли кто-нибудь представить иллюстрацию или направить меня по ссылке, где эти три понятия объясняются вместе, взяв одни и те же образцы данных, чтобы я мог их легко сравнить?

EDIT:
Кроме того, было бы замечательно, если бы вы могли указать что-то новое именно в этих командах, так как вышел новый релиз 2.2.

Ответы на вопрос(1)

Ваш ответ на вопрос