जैसा कि आप अपने द्वारा लिखी गई क्वेरी से देख सकते हैं, 2.0 में इस प्रकार के एकत्रीकरण के लिए आपको Map/Reduce चलाने की आवश्यकता है। MongoDB पर मैप/रिड्यूस में कुछ प्रदर्शन दंड हैं जिन्हें SO पहले पर कवर किया गया है। - मूल रूप से जब तक आप एक क्लस्टर में समानांतर करने में सक्षम नहीं होते हैं, तब तक आप स्पाइडरमॉन्की के माध्यम से सिंगल थ्रेडेड जावास्क्रिप्ट चलाने जा रहे हैं - एक त्वरित प्रस्ताव नहीं। अनुक्रमणिका, चूंकि आप चयनात्मक नहीं हैं, वास्तव में मदद नहीं करता है - आपको केवल संपूर्ण अनुक्रमणिका और संभावित रूप से दस्तावेज़ को स्कैन करना होगा।
2.2 की आसन्न रिलीज के साथ (वर्तमान में आरसी 1 में इसे लिखने के रूप में) हालांकि आपके पास कुछ विकल्प हैं। एकत्रीकरण ढांचा (जो मूल है, जेएस आधारित मानचित्र/रिड्यूस नहीं) 2.2 में पेश किया गया है जिसमें एक अंतर्निहित समूह संचालक और विशेष रूप से MongoDB में इस तरह के ऑपरेशन को गति देने के लिए बनाया गया था।
मैं 2.2 को एक शॉट देने की सलाह दूंगा और देखूंगा कि क्या समूहीकरण पर आपके प्रदर्शन में सुधार होता है। मुझे लगता है कि यह कुछ इस तरह दिखेगा (नोट:परीक्षण नहीं किया गया):
db.alarm.aggregate(
{ $group : {
_id : "$serverName",
count : { $sum : 1 }
}}
);