mongodb - Mongodb在单行中获取计数
问题描述
我有这样的数据:
[ {类型:'A',代码:'001',名称:'帐户001'},{类型:'A',代码:'001',名称:'帐户001'},{类型:'B',代码:'001',名称:'帐户 001'},{类型:'C',代码:'004',名称:'test_account'},{代码:'002',类型:'A',名称:'帐户 002' },...
只有A、B、C 3种类型。代码字段和姓名字段是相关的,例如:代码:“002”表示姓名字段=“帐户002”
我想获得总计数,目标输出应包含以下字段:
名称-代码-totalA-totalB-totalC
account 001-001-300-400-100
account 002-002-150-50-250
test account-004-900-100-45
我无法在一行中获得总计数,有没有办法在 mongodb 中获得一行中的总 A、B、C 计数?
解决方案
$group
db.collection.aggregate([
{
"$group": {
"_id": {
type: "$type",
code: "$code",
name: "$name"
},
"count": {
"$sum": 1
}
}
},
{
"$group": {
"_id": {
"code": "$_id.code",
"name": "$_id.name"
},
"types": {
"$push": {
"type": "$$ROOT._id.type",
"count": "$$ROOT.count"
}
}
}
}
])
推荐阅读
- python - 使用递归构建字典
- java - JNI 和事件函数
- python - 在 Case When 中使用 Q 表达式未在 Django 中返回预期结果。似乎使用了内连接,而不是左连接
- javascript - 如何在具有相同对象的数组值中创建一个新数组
- android - startActivityForResult 单个实例活动时的奇怪行为
- c - Round 37.1-28.75 float 计算正确到 8.4 而不是 8.3
- python - 在 Python 的 for 循环中追加多个时间序列数据
- css - 如何水平定位块元素并将包含的文本居中
- c - 将扑克牌发给四个阵列
- objective-c - 从 Objective-C 访问 unicodeScalars