sql >> Database >  >> NoSQL >> MongoDB

mongodb groupby traag, zelfs na het toevoegen van index

Zoals je kunt zien in de query die je hebt geschreven, vereist dit type aggregatie in 2.0 dat je Map/Reduce uitvoert. Map/Reduce op MongoDB heeft enkele prestatiestraffen die zijn gedekt op SO voor - in principe, tenzij je in staat bent om over een cluster te parallelliseren, ga je javascript met één thread gebruiken via Spidermonkey - geen snel voorstel. De index, aangezien u niet selectief bent, helpt niet echt - u hoeft alleen de hele index en mogelijk het document te scannen.

Met de aanstaande release van 2.2 (momenteel in rc1 op het moment van schrijven) heb je echter enkele opties. Het aggregatieraamwerk (die native is, niet op JS gebaseerde Map/Reduce) geïntroduceerd in 2.2 heeft een ingebouwde groepsoperator en is speciaal gemaakt om dit soort bewerkingen in MongoDB te versnellen.

Ik zou aanraden om 2.2 een kans te geven en te kijken of je prestaties bij het groeperen verbeteren. Ik denk dat het er ongeveer zo uit zou zien (let op:niet getest):

db.alarm.aggregate(
    { $group : {
        _id : "$serverName",
        count : { $sum : 1 }
    }}
);


  1. Hoe een tabel met een bepaalde kolom op te slaan, moet in een array worden opgeslagen en opgehaald in Angularjs (Mean Stack)

  2. findOneAndUpdate is geen functie

  3. How-to:Cloudera Search toevoegen aan uw cluster met Cloudera Manager

  4. Beste Redis-bibliotheek voor Java