如何在MongoDB中的嵌套数组中添加新键值或更改键值? [英] How to add new key value or change the key's value inside a nested array in 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屋!