数据格式:
{
“_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)在结果中返回回来, 感觉是一个很简单的问题,但是研究两天了都没找到解决办法,请大神指教!!!!
gaorb 已回答的问题
像MySQL group by 以后,再将和count总和输出的话,只能在外层再加一层查询。如果将总和输出,最直接的方法也是再加pipeline将数据相加得出结果。但这样就需要查两次了(一次查总和,另一次查各device_type)。我可能会直接在程序端遍历各个groupCount,将它们相加。
klwillgoon 发表新评论
大佬,”再加pipeline将数据相加得出结果”这个具体是怎么个写法呢? 我现在 group算总和 跟 算全部总和, 分两条语句我会写. 但就是用两个 pipeline 在同一条语句里怎么写就不会了…
大佬,”再加pipeline将数据相加得出结果”这个具体是怎么个写法呢? 我现在 group后算count 和 算全部总和, 分两条语句我会写. 但就是用两个 pipeline 在同一条语句里怎么写就不会了…