Hver test, jeg personligt har kørt (herunder ved at bruge dine egne data) viser, at aggregeringsramme er et multiplum, der er hurtigere end kortreduktion, og normalt er en størrelsesorden hurtigere.
Bare ved at tage 1/10 af de data, du postede (men i stedet for at rydde OS-cachen, opvarme cachen først - fordi jeg vil måle effektiviteten af aggregeringen, og ikke hvor lang tid det tager at side i dataene), fik jeg dette:
MapReduce:1.058ms
Aggregation Framework:133ms
Fjernelse af $match fra aggregeringsramme og {query:} fra mapReduce (fordi begge ville bare bruge et indeks, og det er ikke det, vi vil måle) og gruppering af hele datasættet efter key2, fik jeg:
MapReduce:18.803ms
Aggregation Framework:1.535ms
De er meget i tråd med mine tidligere eksperimenter.