如何在MongoDB中的嵌套数组中添加新键值或更改键值? [英] How to add new key value or change the key's value inside a nested array in MongoDB?

查看:97
本文介绍了如何在MongoDB中的嵌套数组中添加新键值或更改键值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下是相同的MongoDB数据:

Below is the same MongoDB data:

{  
   "_id":{  
      "$oid":"5c228169e8cab71a7132c82b"
   },
   "param1":"ABC",
   "param2":[  
      {  
         "aid":{  
            "$oid":"5c228169e8cab7139d10aca7"
         },
         "param3":"DEF",
         "param4":[  
            {  
               "lid":{  
                  "$oid":"5c2281685ee3358440f9412f"
               },
               "param5":"GHI"
            },
            {  
               "lid":{  
                  "$oid":"5c22816d5ee3358440f941bb"
               },
               "param5":"JKL"
            },
         ]
      },
      {  
         "aid":{  
            "$oid":"5c22819de8cab71a7d6db75d"
         },
         "param3":"MNO",
         "param4":[ 
            {  
               "lid":{  
                  "$oid":"5c2281735ee3358440f9428a"
               },
               "param5":"QRS"
            },
            {  
               "lid":{  
                  "$oid":"5c2281795ee3358440f9431a"
               },
               "param5":"TUV"
            }
         ]
      }
   ]
}

问题::如何在param4数组列表中更改值或添加任何新的键值对,例如是否需要将"param5":"JKL"更改为"param5":"XYZ"或添加新的键值将"param6":"Hello""param5":"JKL"配对,以便成员数组变为:

Problem: How to change values or add any new key-value pair in the param4 array list, like if "param5":"JKL" need to be changed to "param5":"XYZ" or adding a new key-value pair "param6":"Hello" alongwith "param5":"JKL" so that member array become like:

{  
   "lid":{  
      "$oid":"5c22816d5ee3358440f941bb"
    },
   "param5":"JKL"
   "param6":"Hello"
}

我检查了不同的解决方案,但是所有解决方案都可以工作到param4的阶段,但不能在其中进行.请分享任何解决方案

I have checked different solutions but all work up to the stage of param4 but not inside the it. Please share any solution

推荐答案

您可以利用$[<identifier>](要更新param5:

db.col.update(
    { _id: { "$oid":"5c228169e8cab71a7132c82b" } }, 
    { $set: { "param2.$[cond1].param4.$[cond2].param5": "XYZ" } }, 
    { arrayFilters: [ { "cond1.aid.$oid": "5c228169e8cab7139d10aca7" }, { "cond2.lid.$oid": "5c22816d5ee3358440f941bb" } ]  })

类似地,您可以使用$set添加新密钥-param6

Similarly you can use $set to add new key - param6

这篇关于如何在MongoDB中的嵌套数组中添加新键值或更改键值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆