我有这样的文档结构
{
"_id" : ObjectId("52263922f5ebf05115bf550e"),
"Fields" : [
{
"Field" : "Lot No",
"Rules" : [ ]
},
{
"Field" : "RMA No",
"Rules" : [ ]
}
]
}
我尝试通过使用以下代码插入将保存对象的规则数组来进行更新。
db.test.update({
"Fields.Field":{$in:["Lot No"]}
}, {
$addToSet: {
"Fields.Field.$.Rules": {
"item_name": "my_item_two",
"price": 1
}
}
}, false, true);
但是我得到以下错误:
can't append to array using string field name [Field]
如何进行更新?
最佳答案
你对那个通配符 $
搞得太深了。您匹配 Fields
数组中的一个项目,因此您可以访问它,使用:Fields.$
。此表达式返回 Fields
数组中的第一个匹配项,因此您可以通过 Fields.$.Field
或 Fields.$.Result
访问其字段。
现在,让我们更新 update
:
db.test.update({
"Fields.Field": "Lot No"
}, {
$addToSet: {
"Fields.$.Rules": {
'item_name': "my_item_two",
'price':1
}
}
}, false, true);
请注意,我已经缩短了 query
,因为它等于您的表达式。
关于arrays - MongoDB 更新数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18600791/