【发布时间】:2023-01-08 10:50:47
【问题描述】:
我有这个简化的 MongoDB 文档,并且想更改一些内容,因为其中有很多冗余数据。此字段“activeUsersLookup”是聚合的结果,它返回我想放入第一个 users 数组中的数据。
第一个编号:
"_id": "80b1565a-faf4-4e68-9bd6-8344060e8d3a"匹配
id 来自activeUsersLookup 用户 ID 也是如此。
[{
"_id": "80b1565a-faf4-4e68-9bd6-8344060e8d3a",
"users": [
{
"_id": "eaa946da-2708-443e-ab4c-b6db357050ca",
"lastactive": {
"$date": {
"$numberLong": "1637922656000"
}
}
},
{
"_id": "4972ba13-6f4e-4943-be07-15802e22e0dd",
"lastactive": {
"$date": {
"$numberLong": "1653286066000"
}
}
},
{
"_id": "6c4a62ce-c6c6-430f-a0cd-d348ec77dbb2",
"lastactive": {
"$date": {
"$numberLong": "1558623982000"
}
}
}
],
"activeUsersLookup": [
{
"_id": "80b1565a-faf4-4e68-9bd6-8344060e8d3a",
"users": [
{
"_id": "eaa946da-2708-443e-ab4c-b6db357050ca",
"activities": 2
},
{
"_id": "6c4a62ce-c6c6-430f-a0cd-d348ec77dbb2",
"activities": 1
}
],
"sumOfActivities": 3
}
]
}]
所以最终的文档或多或少应该是这样的:
[{
"_id": "80b1565a-faf4-4e68-9bd6-8344060e8d3a",
"users": [
{
"_id": "eaa946da-2708-443e-ab4c-b6db357050ca",
"lastactive": {
"$date": {
"$numberLong": "1637922656000"
}
},
"activities": 2
},
{
"_id": "4972ba13-6f4e-4943-be07-15802e22e0dd",
"lastactive": {
"$date": {
"$numberLong": "1653286066000"
}
},
"activities": 0
},
{
"_id": "6c4a62ce-c6c6-430f-a0cd-d348ec77dbb2",
"lastactive": {
"$date": {
"$numberLong": "1558623982000"
}
},
"activities": 1
},
"sumOfActivities": 3
]
}]
我试过:
{
$addFields: {
'licenses.activities': '$activeUsersLookup.users.activities'
}
}
但这给了我一个空数组,所以我一定做错了什么。
下一阶段是将所有这些 activities 加起来为 sumOfActivities,最后一个阶段将取消设置 activeUsersLookup。
我必须使用什么魔术才能获得所需的结果? :)
【问题讨论】:
标签: mongodb aggregation-framework