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

Mongoide aggregerede metoder på indlejrede dokumenter?

Ja, MapReduce ville fungere. Du kan også bruge markører til at behandle et forespørgselsresultat. Ligesom:

min = 99999999;
max = -99999999;
sum = 0;
count = 0
db.School.find({}).forEach(function(s) {
    if (s.first.events.first.cost < min)
        min = s.first.events.first.cost;
    if (s.first.events.first.cost > max)
        max = s.first.events.first.cost;
    sum += s.first.events.first.cost;
    ++count;
});

Du har nu min og max og kan beregne gennemsnit og middel ud fra summen og tællen.

Mongodb har ikke mulighed for at beregne de samlede funktioner i sit forespørgselssprog direkte. Faktisk er det udsagn ikke helt sandt, da der er funktionen count() til at tælle antallet af resultater, der returneres af en forespørgsel, og der er group()-funktionen. Men gruppefunktionen minder meget om en MapReduce og kan ikke bruges på shardede databaser. Hvis du er interesseret i gruppefunktionen, se:http://www. mongodb.org/display/DOCS/Aggregation#Aggregation-Group




  1. Hvor sikkert er det at gemme sessioner med Redis?

  2. Brug af maxTimeMS-parameter med aggregeringsforespørgsler på Mongo 2.6 og Pymongo 2.7.1

  3. Masseindsats i MongoDB ved hjælp af mongoose

  4. hvad er pagecache, dentries, inoder?