【发布时间】:2017-06-30 16:14:59
【问题描述】:
我有这些对象的数组:
item1 = {
name:'item',
val:1,
list:[
{type:'a',value:1},
{type:'b',value:1},
{type:'c',value:1}
]
};
item2 = {
name:'item',
val:5,
list:[
{type:'a',value:3},
{type:'b',value:99},
{type:'c',value:1}
]
};
它们都有相同的数组,相同的类型“a”、“b”和“c”,但值不同。
如何获取类型“a”、“b”和“c”的平均值?
我怎样才能得到所有项目的平均值?
我期待
itemAvg = {
name:'item',
val:3,
list:[
{type:'a',value:2},
{type:'b',value:50},
{type:'c',value:1}
]
};
我认为首先按名称对 val 进行分组并推送列表。 然后展开列表。 然后按类型对列表进行分组。
但这不起作用
model.aggregate([
{ $match : <condition> },
{ $group : {
_id:{name:'$name'},
ValAvg:{$avg:'$val'}
List:{$push:'list'}
}},
{ $unwind:'$List'},
{ $group:{
_id:{type:'$List.type',
ValueAvg:{$avg:'$List.value'}
}}
])
我希望展开后的最后一组会按曲调类型分组并计算每种不同类型的平均值......但没有......我得到 ValueAvg=0
谢谢
【问题讨论】:
标签: node.js mongodb mongoose mongodb-query aggregation-framework