mongodb - 按唯一值分组并获得每个值的总计
问题描述
我正在尝试计算文档中特定值的出现次数。我的文档结构如下:
id: ObjectID("ABC123")
StoreItems: Array
0: Object
Type: "Apple"
Color: "Green"
Size: "Small"
Weight: "5"
1: Object
Type: "Orange"
Color: "Orange"
Size: "Small"
Weight: "8"
2: Object
Type: "Grapes"
Color: "Green"
Size: "Small"
Weight: "8"
当我使用以下内容时,它只给我分组的总数,而不是每个特定类型:
[
{
'$unwind': {
'path': '$StoreItems'
}
}, {
'$match': {
'StoreItems.Color': 'Green'
}
}, {
'$group': {
'_id': 'Type',
'Count': {
'$sum': 1
}
}
}
]
我想得到一个结果:Apples: 1, Grapes:3
但是,我只得到一个结果:Type: 4
解决方案
您应该更改构建_id
for$group
语句的方式。目前它是一个静态值Type
,而您需要引用StoreItems.Type
(以美元开头):
{
'$group': {
'_id': '$StoreItems.Type',
'Count': {
'$sum': 1
}
}
}
推荐阅读
- azure - 永久数据存储 Azure VM
- angular - 来自“下方”视口的角度动画幻灯片在反弹时留下间隙
- javascript - SheetJS:将行值从数组转置到对象
- java - Java OnClickListener 在 Android 片段中不起作用
- json - Springboot json - 忽略缺少的参数
- image - 将图像转换为 TF 记录格式的正确方法(将图像写入 TF 记录格式生成稀疏张量)
- vue.js - VeeValidate with Yup:输入类型=“数字”值在提交时转换为字符串
- android - Firebase Analytics:有没有办法让每个应用版本的用户?
- arrays - VBA UDF 多个数组参数
- kubernetes - 重新安装的节点无法加入 Kubernetes 集群