mongodb - 已分组文档的 MongoDB 分组数组元素
问题描述
我是 MongoDB 的新手,我正在尝试对已经分组的文档中的数组元素进行分组(我想保留第一个分组)。
我有以下基本文件:
{
user: "user_a",
upload_folder: "folder_x",
created_at: "2018-08-30 00:00:00",
volume: 25678
},
{
user: "user_a",
upload_folder: "folder_x",
created_at: "2018-08-29 00:00:00",
volume: 567
},
{
user: "user_b",
upload_folder: "folder_a",
created_at: "2018-08-30 00:00:00",
volume: 25678
}
我想得到一个结果,首先按日期分组(以获取每天所有传输的数量和数量),然后按用户和文件夹分组以获取有关每个用户的传输数量和每个用户的数量的信息。
最终结果应如下所示:
[
_id: {month:08, day:30, year: 2018},
totalVolume: 51356,
totalTransfers: 1,
users: [
{
name:user_a,
transfersPerUser:1,
volumePerUser:25678,
destinations:[
folder: "folder_x",
transfersPerDestination: 1,
volumePerDestination: 25678
]
}
]
]
我的第一个问题是:在一个查询中执行此操作是否有意义,还是我走错了路?
我已经拥有的是每个日期的分组以及每天的交易量和转账的总和。但我不知道如何进行第二次分组,因为现在每个用户的每个单次传输都在一个数组中。
我试图为数组做一个 $unwire 并对每个未连接的条目进行分组。但是如何将结果添加到按日期分组的原始文档中?
获取日期范围内的结果:
$match: {
creationDate: {
$gte: ISODate('2018-08-01 00:00:00'),
$lte: ISODate('2018-08-31 00:00:00')
}
}
按日期分组结果
{
$group: {
_id: {
month: {
$month: "$created_at"
},
day: {
$dayOfMonth: "$created_at"
},
year: {
$year: "$created_at"
},
},
uploads: {
$push: {
"user": "$user",
"upload_folder": "$upload_folder",
"volume": "$volume"
}
},
volumPerDay: {
$sum: "$volume"
},
transfersPerDay: {
$sum: 1
}
}
我该如何进行?使用$unwind
然后呢?
$unwind { path: "$user"}
非常感谢您的帮助。
解决方案
推荐阅读
- pine-script - 特定于 1 天时间范围的平均交易量
- python-3.x - python scapy sendp() 执行时间
- python - 为什么 Paramiko 在执行快速命令时会这么慢?
- javascript - 作为组件的@Input,我想只允许具有字符串值的键
- python - Python Pandas IF ELSE
- node.js - Firebase 功能部署:带有 Github 操作的未定义环境数据
- python - 使用单元格引用的 openpyxl 系列名称
- java - 使用 @RequestPart 向 Spring Boot REST API 端点发送 Angular 请求
- swift - 从未使用过如何修复变量“”;考虑用“_”替换或删除它
- oracle - SQLDeveloper 将数据从一个数据库复制到另一个数据库中的不同用户