Như bạn có thể thấy từ truy vấn mà bạn đã viết, kiểu tổng hợp này trong 2.0 yêu cầu bạn chạy Bản đồ / Rút gọn. Map / Reduce trên MongoDB có một số hình phạt về hiệu suất đã được đề cập trên SO trước đây - về cơ bản trừ khi bạn có thể chạy song song trên một cụm, bạn sẽ chạy javascript đơn luồng thông qua Spidermonkey - không phải là một đề xuất nhanh. Chỉ mục, vì bạn không chọn lọc, không thực sự hữu ích - bạn chỉ phải quét toàn bộ chỉ mục cũng như có thể là tài liệu.
Mặc dù vậy, với bản phát hành 2.2 sắp xảy ra (hiện đang ở rc1 khi viết bài này), bạn có một số tùy chọn. khung tổng hợp (là bản đồ gốc, không dựa trên JS / Map / Reduce) được giới thiệu trong 2.2 có tích hợp sẵn toán tử nhóm và được tạo đặc biệt để tăng tốc loại hoạt động này trong MongoDB.
Tôi khuyên bạn nên thử 2.2 và xem liệu hiệu suất của bạn khi phân nhóm có cải thiện hay không. Tôi nghĩ nó sẽ trông giống như thế này (lưu ý:không được thử nghiệm):
db.alarm.aggregate(
{ $group : {
_id : "$serverName",
count : { $sum : 1 }
}}
);