如何更新EmbeddedDocument的ListFiled?

时间:2019-06-06 05:24:39

标签: python mongodb

我的文档就像:

{
  _id:"1"
  picpiclist: [
    {
      id: 1,
      page: 1,
      pictextpairlist: [
        {
          id: 1,
        },
        {
          id: 2,
        },
        ...
      ],
    },
    ...
  ]
}

我想在picpiclistpictextpairlist中添加Filed。 这是我的代码:

db.coll.update(
    {"_id":str(_id)}, 
    {"$set":{
        "picpiclist.$[].is_updated":0,
        "picpiclist.$[].is_auditor_updated":0,
        "picpiclist.$[].pictextpairlist.$[].probility_list":[],
        "picpiclist.$[].pictextpairlist.$[].is_updated":0,
        "picpiclist.$[].pictextpairlist.$[].is_auditor_updated":0},
    },
    {"upsert":True}
)

但是有一个错误:

cannot use the part (picpiclist of picpiclist.$[].is_updated) to traverse the element

我该怎么办?

1 个答案:

答案 0 :(得分:0)

在这里,您要添加不更新的新字段。 MongoDB将嵌套对象视为文档。因此,请使用$ push而不是$ set。 #up._S_push