提问人:LMY 提问时间:11/9/2023 最后编辑:LMY 更新时间:11/9/2023 访问量:35
MongoDB 按字段和计数分组
MongoDB group by field and count
问:
我有以下收集数据
{
"_id": 1,
"date": "2023-11-08",
"field": "A"
},
{
"_id": 2,
"date": "2023-11-08",
"field": "B"
},
{
"_id": 3,
"date": "2023-11-08",
"field": "C"
},
{
"_id": 4,
"date": "2023-11-09",
"field": "B"
},
{
"_id": 5,
"date": "2023-11-09",
"field": "C"
}
我想要按日期和计数总数分组,并且计数字段值在数组中还是不在数组中
数组是这样的
['A', 'D', 'E', ...]
我想要的输出
{
_id: '2023-11-08',
in_array: 1,
not_in_array: 2,
count: 3
},
{
_id: '2023-11-09',
in_array: 0,
not_in_array: 2,
count: 2
}
我该怎么做?
答:
1赞
ray
11/9/2023
#1
在 .$sum
$group
db.collection.aggregate([
{
"$group": {
"_id": "$date",
"in_array": {
$sum: {
$let: {
vars: {
inputArray: [
"A",
"D",
"E"
]
},
in: {
"$cond": {
"if": {
"$in": [
"$field",
"$$inputArray"
]
},
"then": 1,
"else": 0
}
}
}
}
},
"not_in_array": {
$sum: {
$let: {
vars: {
inputArray: [
"A",
"D",
"E"
]
},
in: {
"$cond": {
"if": {
$not: {
"$in": [
"$field",
"$$inputArray"
]
}
},
"then": 1,
"else": 0
}
}
}
}
},
"count": {
$sum: 1
}
}
}
])
评论