MongoDB 更新数组元素

4

我有一个类似于以下结构的文档:

{
    "_id" : ObjectId("52263922f5ebf05115bf550e"),
    "Fields" : [
        {
            "Field" : "Lot No",
            "Rules" : [ ]
        },
        {
            "Field" : "RMA No",
            "Rules" : [ ]
        }
    ]
}

我已经尝试使用以下代码更新,将其推入Rules数组中,该数组将保存对象。

db.test.update({
    "Fields.Field":{$in:["Lot No"]}
}, {
    $addToSet: {
        "Fields.Field.$.Rules": {
            "item_name": "my_item_two",
            "price": 1
        }
    }
}, false, true);

但我遇到了以下错误:

无法使用字符串字段名 [Field] 追加数组

如何进行更新?


1
我认为你的$addToSet操作符中有一个多余的Field。请尝试使用$addToSet: { "Fields.$.Rules": ... - Philipp
1个回答

4
你在使用通配符 $ 时有点过度了。你是在匹配 Fields 数组中的一个项目,所以你可以通过 Fields.$ 访问它。这个表达式返回你的 Fields 数组中的第一个匹配项,因此你可以通过 Fields.$.FieldFields.$.Result 访问其字段。
现在,让我们更新 update:
db.test.update({
    "Fields.Field": "Lot No"
}, {
    $addToSet: {
        "Fields.$.Rules": {
            'item_name': "my_item_two",
            'price':1
        }
    }
}, false, true);

请注意,我已将查询缩短,因为它与您的表达式相等。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接