数据格式:
{
“_id” : ObjectId(“6142f6f2214ef618f5e1f2df”),
“device_type” : “-1”,
“user_count” : 5
}
{
“_id” : ObjectId(“j79ghn769bnnb9p9bns”),
“device_type” : “1”,
“user_count” : 4
}
group查询语句:
db.getCollection(‘analysis’).aggregate(
[
{
$group:
{
_id : ‘$device_type’,
groupCount: { $sum: “$user_count” }
}
}
]
)
当前返回结果:
{
“_id” : “1”,
“groupCount” : 11
}
{
“_id” : “0”,
“groupCount” : 24
}
{
“_id” : “-1”,
“groupCount” : 6
}
期望:
能将groupCount的总和数量(41)在结果中返回回来, 感觉是一个很简单的问题,但是研究两天了都没找到解决办法,请大神指教!!!!
你想要的结果是只显示41条总数,还是在原结果里面追加一个。
1、如果只是显示41,不用分组,直接加起来即可。
db.getCollection(‘analysis’).aggregate(
[
{
$group:
{
_id : null
groupCount: { $sum: “$user_count” }
}
}
]
)
2、再每一个分组里面追加吗?
{_id:null,
grouptotal:41,
rwa:[
{
“_id” : “1”,
“groupCount” : 11,}
{
“_id” : “0”,
“groupCount” : 24,}
{
“_id” : “-1”,
“groupCount” : 6}
]
db.getCollection(‘analysis’).aggregate(
[
{
$group:
{
_id : ‘$device_type’,
groupCount: { $sum: “$user_count” }
}
},{$group:{_id:null,grouptotal:{$sum:”$groupCount”},raw:{$push:”$ROOT”}}}]
)
谢谢!感觉能行,但是我看不太懂!还是在程序里面算的~