gpt4 book ai didi

mongodb - 是否可以展平 MongoDB 结果查询?

转载 作者:IT老高 更新时间:2023-10-28 11:03:51 27 4
gpt4 key购买 nike

我的 MongoDB 集合中有一个深度嵌套的集合。

当我运行以下查询时:

db.countries.findOne({},{'data.country.neighbor.name':1,'_id':0})

我在这里得到这个嵌套结果:

{"data" : {
"country" : [
{
"neighbor" : [
{
"name" : "Austria"
},
{
"name" : "Switzerland"
}
]
},
{
"neighbor" : {
"name" : "Malaysia"
}
},
{
"neighbor" : [
{
"name" : "Costa Rica"
},
{
"name" : "Colombia"
}
]
}
]
}}

现在,这就是我想要的:

['Austria', 'Switzerland', 'Malaysia', 'Costa Rica', 'Colombia']

或者这个:

{'name':['Austria', 'Switzerland', 'Malaysia', 'Costa Rica', 'Colombia']}

或其他类似的东西......这可能吗?

最佳答案

你可以使用aggregation$project & $unwind & $group框架以使结果更接近您的要求。

> db.countries.aggregate({$project:{a:'$data.country.neighbor.name'}},
{$unwind:'$a'},
{$unwind:'$a'},
{$group:{_id:'a',res:{$addToSet:'$a'}}})
{
"result" : [
{
"_id" : "a",
"res" : [
"Colombia",
"Malaysia",
"Switzerland",
"Costa Rica",
"Austria"
]
}
],
"ok" : 1
}

$unwind 使用了两次,因为名称数组嵌套得很深。只有当 neighbor 属性是一个数组时,它才会起作用。在您的示例中,一个相邻字段(马来西亚)不是数组

关于mongodb - 是否可以展平 MongoDB 结果查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13281733/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com