arrays - Mongodb $group + 数组项数
问题描述
我需要根据字段 A 对 Mongodb 数据进行 $group ,结果应该包含字段 B 项目的计数,即数组。例如,如果数据看起来像:
{A: 1, B: [1, 2, 3]}
{A: 1, B: [4, 2]}
{A: 2, B: [1]}
{A: 2, B: [2, 3]}
{A: 2, B: [1, 2, 3]}
结果应如下所示:
{A: 1, countB: 5}
{A: 2, countB: 6}
我有一个 $unwind 的解决方案,例如:
[
{
$unwind: "$B"
},
{
$group: {
"_id": "$A",
"countB": {$sum: 1}
},
{
$project: {
"_id": 0,
"A": "$_id.A",
"countB": "$countB"
}
}
]
我的问题是是否可以在没有 $unwind阶段的情况下做到这一点?
谢谢你。
解决方案
您可以使用$size运算符来获取各个数组的长度。
{
$group: {
_id: "$A",
countB: {
$sum: {
$size: "$B"
}
}
}
}
推荐阅读
- postgresql - PostgreSQL,plpython3u 函数。os.getenv 没有找到环境变量
- reactjs - 在反应中从配置中消耗 jsx
- cucumber - Cucumber 5.0.0 和 springboot 多个场景在一个特性文件中
- r - For循环将值存储到数据框的新列中
- azure - Azure 服务总线订阅筛选器 Arm 模板未创建 $Default 筛选器
- c++ - 将 QListView 显示为搜索结果的弹出窗口
- python - Python 使用 exec() 增加内存使用量
- java - Android Studio 更新后不支持 Gradle 版本
- apache-spark - 如何调用 spark.stop() 旧会话?
- java - AWS API Gateway - 条件集成响应格式?