猿问

MongoDB - 使用不同的值更新数组内对象中的值

我在 trainer_copy 集合 (MongoDB) 中有很多文档,但这里我只显示了 2 个。我需要更新很多文档。


//1


  {

    "jobRoles": [{

            "sector": {

                "id": "11",

                "name": "Electronics & Hardware"

            }

        },

        {

            "sector": {

                "id": "23",

                "name": "Management"

            }

        },

        {

            "sector": {

                "id": "9",

                "name": "Construction"

            }

        },

        {

            "sector": {

                "id": "11",

                "name": "Electronics & Hardware"

            }

        },

    ]

}


//2

{

    "jobRoles": [{

            "sector": {

                "id": "20",

                "name": "Iron & Steel"

            }

        },

        {

            "sector": {

                "id": "20",

                "name": "Iron & Steel"

            }

        },

        {

            "sector": {

                "id": "9",

                "name": "Construction"

            }

        },

    ]

}

}

我需要更新后的结果如下:


//1

{

    "jobRoles" : [ 

        {

            "sector" : {

                "id" : "11",

                "name" : "Electronics and Hardware"

            }

        }, 

        {

            "sector" : {

                "id" : "23",

                "name" : "Management"

            }

        }, 

        {

            "sector" : {

                "id" : "9",

                "name" : "Construction"

            }

        }, 

        {

            "sector" : {

                "id" : "11",

                "name" : "Electronics and Hardware"

            }

        }, 

]

}


//2

{

    "jobRoles" : [ 

        {

            "sector" : {

                "id" : "20",

                "name" : "Iron and Steel"

            }

        }, 

        {

            "sector" : {

                "id" : "20",

                "name" : "Iron and Steel"

            }

        }, 

        {

            "sector" : {

                "id" : "9",

                "name" : "Construction"

            }

        }, 

    ]

}

}


胡子哥哥
浏览 98回答 1
1回答

狐的传说

var tc = [    {"name":"Electronics & Hardware",            "new_name" :  "Electronics and Hardware"},    {"name":"Furniture & Fittings",              "new_name" :  "Furniture and Fittings"},    {"name":"Gems & Jewellery",                  "new_name" :  "Gems and Jewellery"},    {"name":"Instrumentation",                   "new_name" :  "IASC"},    {"name":"Iron & Steel",                      "new_name" :  "Iron and Steel"},    ]        tc.forEach(x => {db.trainer_copy.updateMany({"jobRoles.sector.name":x["name"]},{    $set: {        "jobRoles.$[jobRole].sector.name": x["new_name"]        }    },    { arrayFilters: [{ "jobRole.sector.name": x["name"] }] }    )})在上面的答案中,名称 jobRole 是数组中与过滤器匹配的索引的占位符 { "jobRole.sector.name" : x ["name"] }。x ["name"] 是旧名称并将其更新为新名称即 x["new_name"]。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答