MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Domanda sull'aggregazione di MongoDB Map/Reduce Array

  1. Il "chunking" deriva dal tuo codice:il parametro dei valori della tua funzione di riduzione può contenere sia {time:<timestamp>,value:<value>} emesso dalla funzione della mappa o {time:[<timestamps>],value:[<values]} restituito da una precedente chiamata alla tua funzione di riduzione.

  2. Non so se succederà in pratica, ma in teoria può succedere.

  3. Fai semplicemente in modo che la tua funzione di mappa emetta lo stesso tipo di oggetti che restituisce la tua funzione di riduzione, ad esempio emit(<id>, {time: [ts], value: [P[1]]}) e modifica la tua funzione di riduzione di conseguenza, ad esempio Array.push.apply(result.time, V.time) e allo stesso modo per result.value .

    Beh, in realtà non capisco perché non stai usando una matrice di coppie tempo/valore, invece di una coppia di matrici, ad es. emit(<id>, { pairs: [ {time: ts, value: P[1] ] }) o emit(<id>, { pairs: [ [ts, P[1]] ] }) nella funzione mappa e Array.push.apply(result.pairs, V.pairs) nella funzione di riduzione. In questo modo, non avrai nemmeno bisogno della funzione finalize (tranne forse per "scompattare" l'array dalle coppie proprietà:poiché la funzione reduce non può restituire un array, devi avvolgerlo in questo modo in un oggetto)