以下是db中文檔的樣子。MongoDB - 如何進行查詢以獲得平均使用率?
/* 1 */
{
"_id" : 1,
"feat" : {
"processName": [
{
"value" : {
"value": "Process1"
}
}
],
"processUsage": [
{
"value" : {
"value": 23.21
}
}
]
}
}
/* 2 */
{
"_id" : 2,
"feat" : {
"processName": [
{
"value" : {
"value": "Process2"
}
}
],
"memoryUsage": [
{
"value" : {
"value": 2.411502e+05
}
}
]
}
}
/* 3 */
{
"_id" : 3,
"feat" : {
"processName": [
{
"value" : {
"value": "Process1"
}
}
],
"processUsage": [
{
"value" : {
"value": 67.42
}
}
]
}
}
/* 4 */
{
"_id" : 4,
"feat" : {
"processName": [
{
"value" : {
"value": "Process3"
}
}
],
"processUsage": [
{
"value" : {
"value": 39.97
}
}
]
}
}
/* 5 */
{
"_id" : 5,
"feat" : {
"processName": [
{
"value" : {
"value": "Process2"
}
}
],
"processUsage": [
{
"value" : {
"value": 21.05
}
}
]
}
}
每個進程都包含具有processUsage和memoryUsage的條目。我感興趣的是平均processUsage。所以,我想用memoryUsage忽略這些條目。
我在$ avg的合計中嘗試了$ match + $組,但對於每個過程,我只是以平均值0.00000000返回。 然後我試着用mapReduce使用javascript,我很幸運,不幸的是它也沒有成功。
有人能告訴我該怎麼做嗎?順便說一句,我使用Robomongo 0.8.5
編輯:
查詢看起來是這樣的:
db.database.aggregate([
{ $match : {"$feat.processUsage.value.value": {$gt : -1}
},
{
$group: {_id: "$feats.processName.value.value", average: {$avg:
"$feats.processUsage.value.value"}
}
])
你能證明你試一下查詢? – toddmo
@toddmo:我添加了查詢。 – tumbler
你在錯誤的基礎上分組。你需要一個標識符來區分內存和進程。然後按它分組。 –