sql >> Databasteknik >  >> NoSQL >> MongoDB

Kartlägga/minska och sortera kapslade dokument

MapReduce är en operation som går över ett gäng dokument och utför en operation. Jag är inte helt säker på att det är exakt vad du vill, men möjligen lägger du upp en enklare form av ditt verkliga problem. I vilket fall som helst fungerar följande kod genom att sända ut 3 gånger för ditt enskilda dokument, med dokumentets _id som nyckeln till reduceringsfunktionen.

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. Nod mongodb:Fel:anslutning stängd på grund av parseError

  2. Django-sessioner

  3. Hur skapar man en modell i DRY-mönster med hjälp av flow.js (för asynkrona anrop) i node.js?

  4. Hur refererar man till ett annat schema i mitt Mongoose-schema?