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