Arrays MongoDB更新数组元素
我有一个像这样的文档结构Arrays MongoDB更新数组元素,arrays,mongodb,push,insert-update,Arrays,Mongodb,Push,Insert Update,我有一个像这样的文档结构 { “_id”:ObjectId(“52263922f5ebf05115bf550e”), “字段”:[ { “字段”:“批号”, “规则”:[] }, { “字段”:“RMA编号”, “规则”:[] } ] } 我已尝试使用以下代码将更新推入包含对象的规则数组 db.test.update({ “Fields.Field”:{$in:[“批号”]} }, { $addToSet:{ “Fields.Field.$.Rules”:{ “项目名称”:“我的项目二”, “
{
“_id”:ObjectId(“52263922f5ebf05115bf550e”),
“字段”:[
{
“字段”:“批号”,
“规则”:[]
},
{
“字段”:“RMA编号”,
“规则”:[]
}
]
}
我已尝试使用以下代码将更新推入包含对象的规则数组
db.test.update({
“Fields.Field”:{$in:[“批号”]}
}, {
$addToSet:{
“Fields.Field.$.Rules”:{
“项目名称”:“我的项目二”,
“价格”:1
}
}
},假,真);
但我得到了以下错误:
无法使用字符串字段名[field]追加到数组
如何进行更新?您使用该通配符太深了
$
。您可以在字段
数组中匹配一个项目,因此您可以通过:字段访问该项目。$
。此表达式返回字段
数组中的第一个匹配项,因此可以通过字段。$.Field
或字段。$.Result
到达其字段
现在,让我们更新更新:
db.test.update({
"Fields.Field": "Lot No"
}, {
$addToSet: {
"Fields.$.Rules": {
'item_name': "my_item_two",
'price':1
}
}
}, false, true);
请注意,我缩短了查询
,因为它与您的表达式相等。我认为您的$addToSet运算符中有一个多余的字段
。请尝试$addToSet:{“字段.$.Rules”:…