sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB Map/Reduce Array aggregeringsfråga

  1. "Chunking" kommer från din kod:din reduceringsfunktions värdeparameter kan innehålla antingen {time:<timestamp>,value:<value>} sänds ut från din kartfunktion, eller {time:[<timestamps>],value:[<values]} returnerade från ett tidigare samtal till din reduceringsfunktion.

  2. Jag vet inte om det kommer att hända i praktiken, men det kan hända i teorin.

  3. Låt helt enkelt din kartfunktion sända ut samma typ av objekt som din reduceringsfunktion returnerar, t.ex. emit(<id>, {time: [ts], value: [P[1]]}) , och ändra din reduceringsfunktion i enlighet därmed, t.ex. Array.push.apply(result.time, V.time) och liknande för result.value .

    Tja, jag förstår faktiskt inte varför du inte använder en array av tid/värde-par istället för ett par arrayer, dvs emit(<id>, { pairs: [ {time: ts, value: P[1] ] }) eller emit(<id>, { pairs: [ [ts, P[1]] ] }) i kartfunktionen och Array.push.apply(result.pairs, V.pairs) i reduceringsfunktionen. På så sätt behöver du inte ens slutföringsfunktionen (förutom kanske att "packa upp" arrayen från paren egenskap:eftersom reduceringsfunktionen inte kan returnera en array måste du linda in den på det sättet i ett objekt)




  1. Ladda gnistdata i Mongo / Memcached för användning av en webbtjänst

  2. Returnera hela dokumentet från aggregering

  3. Samtidig uppdatering av arrayelement som är inbäddade dokument i MongoDB

  4. Hur kan jag använda en cursor.forEach() i MongoDB med Node.js?