sql >> データベース >  >> NoSQL >> MongoDB

平均時間を計算できません

    コメントによると、あなたの問題は有効なJavaScriptを形成することの1つです。また、あなたの「キー」値はあなたが本当に望んでいるものではないようです。ただし、集計 があります。 「グループ」の使用よりも優先すべき機能

    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 。そして、些細な操作を除いて、すべき 好きな選択になりましょう。

    これはJavaScriptエンジンではなくネイティブコードで処理されるため、はるかに高速に実行されます。

    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. mongodbのドキュメントから1つまたは2つのフィールドのみを削除するにはどうすればよいですか?

    2. エラー:127.0.0.1:6379へのRedis接続に失敗しました-ECONNREFUSED127.0.0.1:6379に接続してください

    3. MongoDBでの年および月ごとの集計

    4. Mongodbのexplain():nscannedとnscannedObjectsの違い