コメントによると、あなたの問題は有効な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
},
そのため、.
があるため、そのフィールドは存在できません。 フィールド名に、明らかなサブドキュメント 理由は許可されていません。