【发布时间】:2020-07-19 21:57:43
【问题描述】:
我有一个 Mongo 数据库,其中包含类似这样的文档:
{
date:"2019-06-12T00:09:03.000Z",
actions:{
actionDate:"2019-06-12T00:15:25.000Z",
data:{
users:[
[{gender:"Male",age:24},
{gender:"Female",age:25}
],
[{gender:"Male",age:34},
{gender:"Male",age:26}
],
[{gender:"Female",age:19},
{gender:"Male",age:21}
]
]
}
}
}
我想在单个文档中总结出现在数组users 中的用户,比如
{
"date":"2019-06-12T00:09:03.000Z",
"actionDate":"2019-06-12T00:15:25.000Z",
"summary":{
"countFemale":2,
"meanFemaleAge":22,
"countMale":4,
"meanMaleAge":26.25
}
}
需要考虑的一些因素:可能没有一种性别的情况,而且users 数组可能仅限于其中的一两个数组。
我已经尝试使用我现在知道的关于 Mongo 查询语言的稀缺知识来解决它,但这对我来说似乎无法解决。认为这可能对检查 MongoDB: Reduce array of objects into a single object by computing the average of each field 有用,但无法跟上这个想法。
有什么想法吗?
【问题讨论】:
-
您提到的问题是关于减少具有动态字段名称的数组。 $reduce 应该适合您的情况。
标签: arrays mongodb multidimensional-array aggregate