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

Kortlæg/reducer og sorter indlejret dokument

MapReduce er en operation, der går over en masse dokumenter og udfører en handling. Jeg er ikke helt sikker på, at det er præcis det, du vil have, men muligvis poster du en enklere form for dit egentlige problem. Under alle omstændigheder fungerer følgende kode ved at udsende 3 gange for dit enkelt dokument, ved at bruge dokumentets _id som nøglen til reduktionsfunktionen.

doc = {_id : 16, days : { 1 : 123, 2 : 129, 3 : 140, 4 : 56, 5 : 57, 6 : 69, 7 : 80 }};
db.so.insert(doc);

map = function() {
  emit(this._id, this.days["1"]);
  emit(this._id, this.days["3"]); 
  emit(this._id, this.days["7"]); 
}

reduce = function (k, vals) {
  var sum = 0;
  vals.forEach(function (v) {sum += v;});
  return sum;
}

res = db.so.mapReduce(map, reduce, {out : {inline : 1}});
res.find();



  1. Sådan sletter du mange dokumenter i en partitioneret samling i Azure CosmosDB ved hjælp af MongoDB API

  2. Meteormetode vs. nægte/tillad regler

  3. Indsæt og returner ID for underdokument i MongoDB-dokumentunderdokumentarray

  4. Er Firebase UID unikt på tværs af flere apps?