MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

औसत समय की गणना करने में असमर्थ

टिप्पणी के अनुसार आपकी समस्या वैध जावास्क्रिप्ट बनाने में से एक है। साथ ही आपका "कुंजी" मान वह नहीं होगा जो आप वास्तव में चाहते हैं। हालांकि एग्रीगेट है फ़ंक्शन जिसे आपको "समूह" के उपयोग के पक्ष में होना चाहिए

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
},

इसलिए वह फ़ील्ड मौजूद नहीं हो सकता क्योंकि इसमें . . है फ़ील्ड नाम में, जो स्पष्ट रूप से उप-दस्तावेज़ . के लिए है कारणों की अनुमति नहीं है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB और Nodejs के साथ दिनांक सम्मिलित करना और क्वेरी करना

  2. आप आधिकारिक सी # ड्राइवर का उपयोग कर MongoDB में Update.Set का उपयोग करके एकाधिक फ़ील्ड कैसे अपडेट करते हैं?

  3. किसी सरणी में किसी ऑब्जेक्ट के तत्व द्वारा खोजें

  4. अद्वितीय फ़ील्ड वाले सभी दस्तावेज़ों के लिए MongoDB क्वेरी

  5. नेस्टेड सरणी में पहला तत्व खोजें जो शर्तों से मेल खाता हो