उस सरल कार्य के लिए मानचित्र का उपयोग/कम करना एक अखरोट को तोड़ने के लिए एक (तुलनात्मक रूप से धीमा) स्लेजहैमर का उपयोग करने जैसा है। एकत्रीकरण ढांचा मूल रूप से इस तरह के सरल एकत्रीकरण के लिए आविष्कार किया गया था (और आपके लिए और भी बहुत कुछ कर सकता है!):
db.order.aggregate([
{ "$group":{ "_id":"$customer", "orders":{ "$sum": 1 }}},
{ "$out": "order_total"}
])
आपके उपयोग के मामले के आधार पर, आप $out
. को भी छोड़ सकते हैं चरण और सीधे परिणामों का उपभोग करें।
> db.orders.aggregate([{ "$group":{ "_id":"$customer", "orders":{ "$sum": 1 }}}])
{ "_id" : "b", "orders" : 2 }
{ "_id" : "a", "orders" : 3 }
ध्यान दें कि बहुत बड़े संग्रह के साथ, यह संभवतः उपयुक्त नहीं है, क्योंकि इसमें कुछ समय लगता है (लेकिन यह अभी भी मानचित्र/संचालन को कम करने से तेज़ होना चाहिए)।
एक ग्राहक के ऑर्डर की संख्या जानने के लिए, आप एक साधारण क्वेरी का उपयोग कर सकते हैं और कर्सर.गिनती () विधि:
> db.orders.find({ "customer": "a" }).count()
3