Javascript 无法使用部件(stats.cat3.detail.name的stats)遍历元素。嵌套对象和数组
我能做到Javascript 无法使用部件(stats.cat3.detail.name的stats)遍历元素。嵌套对象和数组,javascript,arrays,node.js,mongodb,mongoose,Javascript,Arrays,Node.js,Mongodb,Mongoose,我能做到 db.getCollection('comps').find({"stats.cat3.detail.name" : "Friendlyness"})` 这显示了适当的文档在细节数组中的名称为“Friendlyness” 我想把“友好”改为“友好” 我试过: db.getCollection('comps').update( {"stats.cat3.detail.name" : "Friendlyness"}, {$set : {"stats.cat3.detail.n
db.getCollection('comps').find({"stats.cat3.detail.name" : "Friendlyness"})`
这显示了适当的文档在细节数组中的名称为“Friendlyness”
我想把“友好”改为“友好”
我试过:
db.getCollection('comps').update(
{"stats.cat3.detail.name" : "Friendlyness"},
{$set : {"stats.cat3.detail.name" : "Friendliness"} }
)
并且出现了类似“无法使用部分(stats.cat3.detail.name的stats)遍历元素({stats:[{cat3:…”) 我试着在更新对象属性中放置运算符“$”,但仍然会出现错误 样本数据:
{
"_id" : ObjectId("58d94c441eb9e52454932db6"),
"desc" : "Manufacturer of a wide range of consumer electronics products including audio, video, communications, and computer systems.",
"source" : "alexa",
"category" : "Consumer Electronics",
"name" : "comp1.com",
"__v" : 0,
"stats" : [
{
"cat1" : {
"detail" : [
{
"value" : [
{
"data" : 1,
"name" : "quick service"
}
],
"name" : "Time on hold"
},
{
"value" : [
{
"data" : 1,
"name" : "some words but strong accent"
},
{
"data" : 1,
"name" : "EZ to understand"
}
],
"name" : "Language fluency"
},
{
"value" : [
{
"data" : 1,
"name" : "Yes"
}
],
"name" : "Human answered"
},
{
"value" : [
{
"data" : 2,
"name" : "Like a hot potato"
},
{
"data" : 1,
"name" : "1 or 2 times"
}
],
"name" : "Transfered alot"
},
{
"value" : [
{
"data" : 3,
"name" : "ok time"
},
{
"data" : 1,
"name" : "quick service"
},
{
"data" : 1,
"name" : "short time"
}
],
"name" : "Time on Hold"
},
{
"value" : [
{
"data" : 1,
"name" : "some word but strong accent"
},
{
"data" : 2,
"name" : "EZ to understand"
}
],
"name" : "Language Fluency"
},
{
"value" : [
{
"data" : 2,
"name" : "Yes"
}
],
"name" : "Human Answered"
}
],
"average" : 81
},
"cat2" : {
"detail" : [
{
"value" : [
{
"data" : 1,
"name" : "It was ok"
},
{
"data" : 1,
"name" : "Not EZ at all"
},
{
"data" : 7,
"name" : "there were hidden gimicks"
},
{
"data" : 2,
"name" : "It was OK"
},
{
"data" : 1,
"name" : "Found Quickly"
}
],
"name" : "Easy to find desired product"
},
{
"value" : [
{
"data" : 1,
"name" : "Easy to understand"
},
{
"data" : 1,
"name" : "Eventually understood"
}
],
"name" : "Clear information about the product"
},
{
"value" : [
{
"data" : 2,
"name" : "none"
},
{
"data" : 3,
"name" : "There was but won't complain"
},
{
"data" : 1,
"name" : "Very Bad"
}
],
"name" : "Annoying popups"
},
{
"value" : [
{
"data" : 4,
"name" : "Eventually Understood"
},
{
"data" : 1,
"name" : "EZ to understand"
}
],
"name" : "Clear data about the product"
}
],
"average" : 71
},
"cat3" : {
"detail" : [
{
"value" : [
{
"data" : 1,
"name" : "Very quick"
}
],
"name" : "Prompteness"
},
{
"value" : [
{
"data" : 3,
"name" : "We're cool"
},
{
"data" : 4,
"name" : "They didn't like me"
}
],
"name" : "Friendlyness"
},
{
"value" : [
{
"data" : 3,
"name" : "Very Confusing"
},
{
"data" : 2,
"name" : "Still a little confused"
},
{
"data" : 3,
"name" : "Enlightened"
}
],
"name" : "Knowledge"
},
{
"value" : [
{
"data" : 3,
"name" : "On hold too many times"
}
],
"name" : "Promptness"
}
],
"average" : 69
}
}
]
}
您本打算使用,但它对您没有帮助,因为您有嵌套数组。MongoDB无法匹配多个数组中的多个位置。您只能直接标记要更新的索引。但实际上您不应该使用嵌套数组。您正在阅读文档吗?您真的需要“展平”此结构。它不适合在MongoDB中使用。感谢您确认位置运算符不起作用。我希望我不必更改结构。我只是想将值更改为友好性。它“起作用”但在一个层面上,就像设计的那样。在这方面存在一个问题,但它没有得到解决的真正原因是嵌套数组的设计很糟糕。相反,你应该有一个数组,带有属性来区分不同的东西。因此,每个“嵌套”实际上是包含数据上的一个附加“属性”。这是有效的“非常好”。您应该使用,但它对您没有帮助,因为您有嵌套数组。MongoDB无法匹配多个数组中的多个位置。您只能直接标记要更新的索引。但实际上您不应该使用嵌套数组。您正在阅读文档吗?您确实需要“展平”“此结构。它不适合在MongoDB中使用。感谢您确认位置运算符不起作用。我希望我不必更改此结构。我只是想将值更改为友好性。嗯,它“起作用”但在一个层面上,就像设计的那样。在这方面存在一个问题,但它没有得到解决的真正原因是嵌套数组的设计很糟糕。相反,你应该有一个数组,带有属性来区分不同的东西。因此,每个“嵌套”实际上是包含数据上的一个附加“属性”。这是有效的“非常好”。