Det finns en nyckelfråga här angående den förväntade produktionen. Det framgår inte 100 % av din fråga vilken du vill ha.
Vill du ha (A) :
{ _id: "document1", value: { mode: 1.0, median: 10.0 } }
{ _id: "document2", value: { mode: 5.0, median: 150.0 } }
... one for each document
... eller vill du ha (B) , läget och medianen över alla kombinationer av alla arrayer.
- Om svaret är (A) , så fungerar Map/Reduce fungerar .
- Om svaret är (B) , då kommer Map/Reduce antagligen inte att fungera .
Om du planerar att göra (A) , läs M/R-dokumentationen noggrant och förstå begränsningarna. Medan alternativ (A) kan vara en Map/Reduce, det kan också bara vara en stor for
loop med en upsert
på "sammanfattningssamlingen" eller till och med tillbaka till den ursprungliga samlingen. Detta kan vara ännu effektivare.