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中使用。感谢您确认位置运算符不起作用。我希望我不必更改此结构。我只是想将值更改为友好性。嗯,它“起作用”但在一个层面上,就像设计的那样。在这方面存在一个问题,但它没有得到解决的真正原因是嵌套数组的设计很糟糕。相反,你应该有一个数组,带有属性来区分不同的东西。因此,每个“嵌套”实际上是包含数据上的一个附加“属性”。这是有效的“非常好”。