mongodb - 如何获取子数组对象中可用的 ID 列表
问题描述
StackOverflow 社区,我有一个类似于这个家伙的问题 如何仅获取 JSON 对象的 ID 列表?
但我需要使用 MongoDB 查询来完成,因为我需要查询大量数据。
我有 1 个这样的对象:
{
"_id": ObjectId(".."),
"data":
[
{
customId : 22,
customArr:[
321,
123
]
},
{
customId : 33,
customArr:[
123
]
},
{
customId : 22,
customArr:[
]
}
]
}
(ofc 有更多数据,但只有这一点对此很重要) 问题:我不知道如何获取这样的列表:
[ 22, 33 ]
和
[123, 321]
我需要这些列表来计算我的数据,但我目前完全无法计算任何东西。我不能改变我的结构,因为我已经积累了大量这种格式的数据,它会破坏我的整个应用程序。
我使用的是 MongoDB 3.4,所以所有 3.2 聚合更新都可用,但我无法让它工作。
谁能给我链接我需要阅读才能完成此任务的文档?或者给出我需要的任何关于 MongoDB 函数的提示?
提前感谢您的帮助,如果我找到解决方案,我将发布我的解决方案
解决方案
您可以使用以下聚合
db.collection.aggregate([
{ "$project": {
"customId": { "$setUnion": "$data.customId" },
"customArr": {
"$reduce": {
"input": "$data",
"initialValue": [],
"in": { "$setUnion": ["$$this.customArr", "$$value"] }
}
}
}}
])
推荐阅读
- excel - 通过循环随机填充列
- laravel - psql SQL STATE[08006] 用户的密码验证失败。拉拉维尔
- kubernetes - 将多个 k8s 自定义组合为一个
- java - 杰克逊的洗涤器
- reactjs - 如何在 Jest 中监视默认道具功能
- python - 如何从具有多个值的数据框列中删除重复项?
- postgresql - 有没有办法在 Posgresql 中实现基于中继式游标的分页?
- html - 试图将“阴影”应用于页眉和页脚。页脚看起来正确,页眉不正确
- javascript - props.array.map 不是函数
- c# - 在 for 循环中使用 for 循环生成包含内容的行