Come puoi vedere dalla query che hai scritto, questo tipo di aggregazione in 2.0 richiede l'esecuzione di Map/Reduce. Map/Reduce su MongoDB ha alcune penalità prestazionali che sono state coperte su SO prima - in pratica, a meno che tu non sia in grado di parallelizzare su un cluster, eseguirai javascript a thread singolo tramite Spidermonkey - non una proposta rapida. L'indice, dal momento che non sei selettivo, non aiuta davvero:devi solo scansionare l'intero indice e potenzialmente il documento.
Con l'imminente rilascio della 2.2 (attualmente in rc1 al momento della stesura di questo) hai comunque alcune opzioni. Il framework di aggregazione (che è nativo, non basato su JS Map/Reduce) introdotto in 2.2 ha un integrato operatore di gruppo ed è stato creato appositamente per velocizzare questo tipo di operazioni in MongoDB.
Consiglierei di dare una possibilità a 2.2 e vedere se le tue prestazioni sul raggruppamento migliorano. Penso che assomiglierebbe a questo (nota:non testato):
db.alarm.aggregate(
{ $group : {
_id : "$serverName",
count : { $sum : 1 }
}}
);