mongo:在对象数组中插入文档时出错

时间:2021-03-04 08:24:38

标签: python mongodb pymongo

我试图在嵌套在数组中的对象中插入一个文档。例如,如果这是我目前的状态

{
    "id" : "abcd",
    "test" : [
        {
            "token" : "abcd2",
            "value1" : 1
        }
    ]
}

我想在对象内添加新值

"test" : [
    {
       "token" : "abcd2",
       "value1" : 1,
       "value2" : 2
]

我正在尝试的方法是用新值替换旧值。

db.update({ '$and' : [{"Id" : 'abcd' },{ "test" :  {"$elemMatch" : {'token' : "abcd2"}}}]}, {"$set" : {"test.$" : { "value2" : 2}})

如何防止值被替换。

1 个答案:

答案 0 :(得分:0)

设置 "test.$" 会修改测试数组中的整个匹配元素。

要仅修改该子文档的一个字段,请使用 {"test.$.value2": 2}

要将多个字段添加到嵌入文档,请分别列出每个字段及其路径,如

{$set: {
     "test.$.value2": 2,
     "test.$.value3": 3
}}
相关问题