यह ठीक से काम नहीं कर रहा है क्योंकि यह संग्रह में सभी दस्तावेजों को एकत्रित कर रहा है; आप एक स्थिर "_id":"tempId"
. पर समूह बना रहे हैं , आपको केवल $
. जोड़कर सही कुंजी को संदर्भित करने की आवश्यकता है के रूप में:
db.getCollection('myCollection').aggregate([
{ "$group": {
"_id": "$tempId",
"totalValue": {
"$sum": { "$sum": "$messages.data.value" }
}
} }
])
जो संक्षेप में एक अतिरिक्त क्षेत्र के साथ एक समग्र संचालन का एक एकल चरण पाइपलाइन संस्करण है जो समूह पाइपलाइन से पहले योग अभिव्यक्ति रखता है और फिर उस क्षेत्र को $sum
समूह में ऑपरेटर।
उपरोक्त $sum
से काम करता है
MongoDB से 3.2+ दोनों में उपलब्ध है। $प्रोजेक्ट
और $group
चरणों और जब में उपयोग किया जाता है $प्रोजेक्ट
चरण, $sum
भावों की सूची का योग देता है। व्यंजक "$messages.data.value"
संख्याओं की सूची देता है [120, 1200]
जो तब $sumके रूप में उपयोग किए जाते हैं कोड>
अभिव्यक्ति:
db.getCollection('myCollection').aggregate([
{ "$project": {
"values": { "$sum": "$messages.data.value" },
"tempId": 1,
} },
{ "$group": {
"_id": "$tempId",
"totalValue": { "$sum": "$values" }
} }
])