Sesuai komentar, masalah Anda adalah salah satu dari membentuk JavaScript yang valid. Juga nilai "kunci" Anda tampaknya tidak sesuai dengan keinginan Anda. Namun ada agregat fungsi yang harus Anda sukai daripada penggunaan "grup"
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" ] }
}}
])
Jenis pipa agregasi menggantikan fungsi yang diperkenalkan sebelumnya seperti group
dan distinct
. Dan untuk semua kecuali operasi sepele harus jadilah pilihan favorit Anda.
Ini akan berjalan lebih cepat serta diproses dalam kode asli dan bukan mesin JavaScript.
Lihat juga bagan pemetaan SQL ke agregasi dalam dokumentasi.
Masalah Dengan Data
Sampel Anda tidak terlalu lengkap. Untuk menyelesaikan semua masalah saya harus memasukkan dokumen seperti ini:
{
"profile": {
"Zend_Http_Client_Adapter_Socket::read==>fgets": {
"ct" : 3,
"wt" : 54782314,
"cpu" : 16001,
"mu" : 83288,
"pmu" : 49648
},
}
}
Juga contoh dokumen Anda memiliki beberapa bidang yang tidak valid di dalamnya:
{
"_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
},
Jadi bidang itu tidak bisa ada karena memiliki .
di nama bidang, yang untuk jelas sub-dokumen alasan tidak diperbolehkan.