mongodb objetcid,MongoDB $ sum和$ avg子文档

I need to get $sum and $avg of subdocuments, i would like to get $sum and $avg of Channels[0].. and other channels as well.

my data structure looks like this

{

_id : ... Location : 1,

Channels : [

{ _id: ...,

Value: 25

},

{

_id: ... ,

Value: 39

},

{

_id: ..,

Value: 12

}

]

}

解决方案

Solution 1: Using two groups based this example:

previous question

db.records.aggregate(

[

{ $unwind: "$Channels" },

{ $group: {

_id: {

"loc" : "$Location",

"cId" : "$Channels.Id"

},

"value" : {$sum : "$Channels.Value" },

"average" : {$avg : "$Channels.Value"},

"maximun" : {$max : "$Channels.Value"},

"minimum" : {$min : "$Channels.Value"}

}},

{ $group: {

_id : "$_id.loc",

"ChannelsSumary" : { $push :

{ "channelId" : '$_id.cId',

"value" :'$value',

"average" : '$average',

"maximun" : '$maximun',

"minimum" : '$minimum'

}}

}

}

]

)

Solution 2:

there is property i didn't show on my original question that might of help "Channels.Id" independent from "Channels._Id"

db.records.aggregate( [

{

"$unwind" : "$Channels"

},

{

"$group" : {

"_id" : "$Channels.Id",

"documentSum" : { "$sum" : "$Channels.Value" },

"documentAvg" : { "$avg" : "$Channels.Value" }

}

}

] )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值