sql >> Database >  >> NoSQL >> MongoDB

Kan gemiddelde tijd niet berekenen

Volgens de opmerking is uw probleem er een van het vormen van geldig JavaScript. Ook lijkt uw "sleutel"-waarde niet te zijn wat u echt wilt. Er is echter de aggregaat functie die u zou moeten prefereren boven het gebruik van "groep"

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" ] }
   }}
])

De aggregatiepijplijn vervangt eerder geïntroduceerde functies zoals group en distinct . En voor alles behalve triviale operaties moeten wees uw favoriete keuze.

Het zal veel sneller werken en dit wordt verwerkt in native code en niet in de JavaScript-engine.

Zie ook de SQL naar aggregatie-toewijzingsgrafiek in de documentatie.

Problemen met gegevens

Uw voorbeeld is niet erg compleet. Om alle problemen op te lossen, moet ik een document als dit invoegen:

{
    "profile": {
        "Zend_Http_Client_Adapter_Socket::read==>fgets": {                                           
            "ct" : 3,
            "wt" : 54782314,
            "cpu" : 16001,
            "mu" : 83288,
            "pmu" : 49648
        },
    }
}

Ook bevat uw documentvoorbeeld enkele ongeldige velden:

{
    "_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
},

Dus dat veld kan niet bestaan ​​omdat het een . in de veldnaam, die voor voor de hand liggend subdocument redenen is niet toegestaan.



  1. Op zoek naar een oplossing tussen het instellen van veel timers of het gebruik van een geplande taakwachtrij

  2. scanAndOrder:true verwijderen in mijn MongoDB-queryresultaat

  3. mongo.so:> undefined symbool:php_json_encode in Unknown on line 0. Na installatie mongo-stuurprogramma voor php

  4. Redis configureren om consequent oudere gegevens eerst te verwijderen