为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

胡子哥哥 2022-12-09 15:05:33
我在 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"            }        },     ]}}
查看完整描述

1 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

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"]。


查看完整回答
反对 回复 2022-12-09
  • 1 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信