sql >> Databáze >  >> NoSQL >> MongoDB

Mapovat/zmenšovat a třídit vnořený dokument

MapReduce je operace, která prochází hromadou dokumentů a provádí operaci. Nejsem si úplně jistý, že je to přesně to, co chcete, ale možná zveřejňujete jednodušší formu svého skutečného problému. V každém případě následující kód funguje tak, že se pro váš jednotlivý dokument vygeneruje třikrát, přičemž použije _id dokumentu jako klíč k funkci snížení.

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. Existuje způsob, jak zabránit MongoDB v přidávání množného čísla k názvům kolekcí?

  2. Mongo:jak třídit podle externí hmotnosti

  3. Jak převést sadu replik MongoDB na samostatný server

  4. Mongo v testovacích kontejnerech