【发布时间】:2017-07-30 16:38:48
【问题描述】:
这是 db 中的文档的样子。
/* 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 的条目。
我尝试了 $match + $group 与 $avg 的聚合,但对于每个进程,我只得到平均 0.00000000。 然后我用javascript尝试了mapReduce的运气,不幸的是它也没有成功。
有人能告诉我怎么做吗?顺便说一句,我使用的是 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:我添加了查询。
-
您在错误的基础上进行分组。您将需要一个标识符来区分内存和进程。然后按它分组。
-
@tumbler 你想要平均所有
processUsage数据?
标签: sql mongodb robo3t database