sql >> Databasteknik >  >> NoSQL >> MongoDB

mongodb groupby långsam även efter att ha lagt till index

Som du kan se av frågan du skrev kräver denna typ av aggregering i 2.0 att du kör Map/Reduce. Map/Reduce på MongoDB har några prestationspåföljder som har täckts på SO före - i princip såvida du inte kan parallellisera över ett kluster kommer du att köra entrådad javascript via Spidermonkey - inte ett snabbt förslag. Indexet, eftersom du inte är selektiv, hjälper inte riktigt - du måste bara skanna hela indexet och eventuellt dokumentet.

Med den nära förestående utgåvan av 2.2 (för närvarande i rc1 när du skriver detta) har du dock några alternativ. aggregationsramverket (som är inbyggd, inte JS-baserad Map/Reduce) introducerad i 2.2 har en inbyggd gruppoperatör och skapades specifikt för att påskynda denna typ av operation i MongoDB.

Jag skulle rekommendera att ge 2,2 ett försök och se om din prestation på gruppering förbättras. Jag tror att det skulle se ut ungefär så här (obs:ej testat):

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


  1. Java-syntax med MongoDB

  2. Scheman i extern modul fungerar inte i Node.js

  3. Robomongo förbindelse med Meteor mongodb

  4. Ej auktoriserad för fråga på admin.system.namespaces på mongodb