如何在mongodb中使用数组对象字段更新字段

时间:2020-06-04 18:08:26

标签: mongodb mongodb-query

我需要使用嵌套数组对象字段更新字段值。

我有一个文件:

{
    "_id" : ObjectId("5e91c7d4249c4035086d6339"),
    "codigo" : "000002",
    "cnpjs" : [
        {
            "cnpj" : "00000000000000"
        }
    ],
    "descricao" : "PLANO SUPREME",
    "status" : "A",
    "tabpreco" : "005",
    "taxaadesao" : 0,
    "cnpj" : ""
}

我需要做这样的事情,但是没有用:

    db.planos.update({},
        { $set: { 'cnpj': 'cnpjs.0.cnpj' } },
        { multi: true, upsert: false }
    )

如何访问对象数组中的嵌套字段?

1 个答案:

答案 0 :(得分:0)

如果您使用的是MongoDB 4.2+,则可以通过聚合运算符使用更新的管道形式:

 db.planos.update({},
       [
         {$set:{cnpj:{$arrayElemAt:["$cnpjs",0]}}},
         {$set:{cnpj:"$cnpjs.cnpj"}}
       ],
       {multi:true}
)