आप Aggregation Pipeline उपयोग कर सकते हैं एक परिणाम के लिए गणना की फ़ील्ड्स जोड़ने के लिए: यहाँ उपयोगकर्ता स्कीमा है। mongo
खोल का उपयोग करके नीचे कुछ उदाहरण दिए गए हैं, लेकिन मोंगोस के Aggregate() helper में सिंटैक्स समान है।
उदाहरण के लिए, रकम (उपयोगकर्ता दस्तावेज़ प्रति) की गणना करने के लिए आप में $add
expression उपयोग कर सकते हैं एक $project
stage:
db.user.aggregate(
// Limit to relevant documents and potentially take advantage of an index
{ $match: {
user_id: "foo"
}},
{ $project: {
user_id: 1,
total: { $add: ["$user_totaldocs", "$user_totalthings"] }
}}
)
से अधिक दस्तावेज़ आप उदाहरण के लिए एक $sum
accumulator के साथ एक $group
stage उपयोग करने के लिए, की जरूरत भर में योग की गणना करने के लिए:
db.user.aggregate(
{ $group: {
_id: null,
total: { $sum: { $add: ["$user_totaldocs", "$user_totalthings"] } },
totaldocs: { $sum: "$user_totaldocs" },
totalthings: { $sum: "$user_totalthings" }
}}
)
आप केवल एक total
फ़ील्ड चाहते हैं; मैंने कई क्षेत्रों की गणना के उदाहरण के रूप में totaldocs
और totalthings
में जोड़ा है।
एक समूह null
की _id
सभी दस्तावेजों $group
चरण के लिए पारित कर दिया से मूल्यों गठबंधन होगा, लेकिन आप भी (user_id
द्वारा इस तरह के समूह के रूप में) यहाँ अन्य मापदंड का उपयोग कर सकते हैं।