【问题标题】:MongoDB Update Array elementMongoDB 更新数组元素
【发布时间】:2013-09-07 04:34:02
【问题描述】:

我有一个类似的文档结构

{
    "_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);

但我收到以下错误:

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

如何进行更新?

【问题讨论】:

  • 我认为你的 $addToSet-Operator 中有一个多余的 Field。试试$addToSet: { "Fields.$.Rules": ...

标签: arrays mongodb push insert-update


【解决方案1】:

您使用通配符 $ 太深了。您匹配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);

请注意我已经缩短了query,因为它等于你的表达方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 2014-07-29
    • 2017-01-05
    • 2020-03-16
    相关资源
    最近更新 更多