टिप्पणी के अनुसार आपकी समस्या वैध जावास्क्रिप्ट बनाने में से एक है। साथ ही आपका "कुंजी" मान वह नहीं होगा जो आप वास्तव में चाहते हैं। हालांकि एग्रीगेट है फ़ंक्शन जिसे आपको "समूह" के उपयोग के पक्ष में होना चाहिए
db.results.aggregate([
{ "$match": {
"$and": [
{ "profile.Zend_Http_Client_Adapter_Socket::read==>fgets.wt": {
"$exists": true
}},
{ "profile.Zend_Http_Client_Adapter_Socket::read==>fgets.wt": {
"$not": { "$type": 2 }
}}
]
}},
{ "$group": {
"_id": null,
"total": { "$sum":
"$profile.Zend_Http_Client_Adapter_Socket::read==>fgets.wt"
},
"count": { "$sum": 1 }
}},
{ "$project": {
"_id": 0,
"avg": { "$divide": [ "$total", "$count" ] }
}}
])
सुपरसीड्स के एकत्रीकरण पाइपलाइन प्रकार ने पहले group
. जैसे कार्यों को पेश किया था और distinct
. और तुच्छ कार्यों को छोड़कर सभी के लिए चाहिए अपनी पसंदीदा पसंद बनें।
यह बहुत तेजी से चलेगा और साथ ही इसे मूल कोड में संसाधित किया जाएगा, न कि जावास्क्रिप्ट इंजन में।
साथ ही SQL से एग्रीगेशन मैपिंग चार्ट देखें दस्तावेज़ीकरण में।
डेटा की समस्या
आपका नमूना बहुत पूरा नहीं है। सभी मुद्दों को हल करने के लिए मुझे इस तरह के एक दस्तावेज़ में रखना होगा:
{
"profile": {
"Zend_Http_Client_Adapter_Socket::read==>fgets": {
"ct" : 3,
"wt" : 54782314,
"cpu" : 16001,
"mu" : 83288,
"pmu" : 49648
},
}
}
साथ ही आपके दस्तावेज़ उदाहरण में कुछ अमान्य फ़ील्ड हैं:
{
"_id" : ObjectId("532a2a986803faba658b456b"),
"profile" : {
"main()==>register_shutdown_function" : {
"ct" : 1,
"wt" : 13,
"cpu" : 0,
"mu" : 1568,
"pmu" : 1000
},
"main()==>load::htdocs/index.php" : { <-- Invalid
"ct" : 1,
"wt" : 17,
"cpu" : 0,
"mu" : 1736,
"pmu" : 4296
},
इसलिए वह फ़ील्ड मौजूद नहीं हो सकता क्योंकि इसमें .
. है फ़ील्ड नाम में, जो स्पष्ट रूप से उप-दस्तावेज़ . के लिए है कारणों की अनुमति नहीं है।