gpt4 book ai didi

arrays - 遍历 mongoDB 中的非关联数组

转载 作者:IT老高 更新时间:2023-10-28 13:32:08 30 4
gpt4 key购买 nike

我有一个文档集合,其中包含嵌套数组形式的数据和不同格式的数组列表。

输入:

{ 
"_id" : ObjectId("5262d2eaca24d995f4958083"),
"array" : [
{
"name" : "sam",
"roll" : 21
},
{
"name" : "vam",
"roll" : 22
},
{
"name" : "mam",
"roll" : 23
},
{
"name" : "jam",
"roll" : [31, 32, 33, 34]
},
{
"name" : [
{"name" : "lam" },
{"name" : "ham" },
{"name" : "pam" }
],
"roll" :[
{"roll" : 41},
{"roll" : 42},
{"roll" : 43}
]
}
]
}

(在上面的代码中,数组[4]与其前辈相比具有不同的格式)

我想获取数组 [4] 的所有名称,即 lam,ham,pam

期望的输出:

lam
ham
pam

我的方法:我尝试了以下代码

db.test1.find().forEach(function(x)
{
x.array.forEach(function(y)
{
y.name.forEach(function(z)
{
print(z.name);
})
})
})

但这给出的错误原因是:

error: Sam has no method 'forEach' :

因为它尝试遍历名称(arraylist 1),但由于它只有一个数据,即“sam”,forEach 不适用于此,因为 forEach 仅适用于关联数组。

仅供引用:当我为嵌套数组尝试相同的代码时,其所有列表的数组格式都相同,我可以获得所需的输出。

请帮助我使用 mongo shell 正确获取代码。

提前致谢:)

最佳答案

您需要检查 y.name 是否是一个数组,然后才尝试打印这些值。像这样的东西应该可以工作:

db.test1.find().forEach(function (x) {
x.array.forEach(function (y) {
if (y.name instanceof Array) {
y.name.forEach(function (z) {
print(z.name);
});
}
});
});

关于arrays - 遍历 mongoDB 中的非关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19476697/

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