sql >> Database >  >> NoSQL >> MongoDB

Mongoïde aggregatiemethoden op ingesloten documenten?

Ja, MapReduce zou werken. U kunt ook cursors gebruiken om een ​​queryresultaat te verwerken. Vind ik leuk:

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;
});

Je hebt nu de min en max en kunt het gemiddelde en gemiddelde berekenen uit de som en telling.

Mongodb heeft niet de mogelijkheid om de aggregatiefuncties rechtstreeks in de querytaal te berekenen. Eigenlijk is die verklaring niet helemaal waar, aangezien er de functie count() is om het aantal resultaten te tellen dat door een query wordt geretourneerd, en er is de functie group(). Maar de groepsfunctie lijkt veel op een MapReduce en kan niet worden gebruikt op shard-databases. Als je geïnteresseerd bent in de groepsfunctie, zie:http://www. mongodb.org/display/DOCS/Aggregation#Aggregation-Group




  1. Help bij het definiëren van een geweldige MongoDB GUI-tool

  2. Hoe verpak ik axios.get meerdere responsresultaten in één array?

  3. MongoDB gelimiteerde verzameling en monotisch stijgende index

  4. Hoe een nieuw object in te voegen zonder het vorige te verwijderen