【发布时间】:2021-08-30 04:53:38
【问题描述】:
示例文档
{
"user_id": "1",
"key": "key1"
},
{
"user_id": "1",
"key": "key2"
},
{
"user_id": "2",
"key": "key1"
},
{
"user_id": "2",
"key": "key1"
},
{
"user_id": "3",
"key": "key2"
},
{
"user_id": "4",
"key": "key1"
}
如果我只想按key 字段分组,我可以使用下面的查询。
db.test.aggregate([
{
$group: {
_id: {
"key": $key"
},
count: {
$sum: 1
}
}
},
{
$sort: {"count":-1}
},
])
它将按key 分组并按key 的计数进行排序。
但是,从上述文档中可以看出,存在单个用户拥有重复密钥的情况。
因此,我必须以user_id 字段为目标进行分组。
预期数据:
{"key": "key1", "count": 3}
{"key": "key2", "count": 2}
如何使用多个字段进行分组?
谢谢。
【问题讨论】:
-
你能再澄清一点吗?您想为每个“键”计算唯一用户“user_id”吗?
标签: mongodb aggregation-framework pymongo