更新mongodb中arrays对象的arrays的嵌入式文档

尼丁

我有以下文件

{
"_id" : ObjectId("5d3fd27b363f482cf67300b5"),
"is_active" : true,
"is_delete" : false,
"email" : "[email protected]",
"phone" : "1234567890",
"agencies" : [ 
    {
        "employees" : [ 
            ObjectId("5d3aeac1ea162253845ac7f8"), 
            ObjectId("5d3aeac1ea162253845ac7f9")
        ],
        "company_role" : [ 
            {
                "employees" : [ 
                    ObjectId("5d3aeac1ea162253845ac7f8"), 
                    ObjectId("5d3aeac1ea162253845ac7f9")
                ],
                "company" : ObjectId("5d3fd27b363f482cf67300b7"),
                "role" : "administrator"
            }, 
            {
                "employees" : [ 
                    ObjectId("5d3aeac1ea162253845ac7f8"), 
                    ObjectId("5d3aeac1ea162253845ac7f9")
                ],
                "company" : ObjectId("5d3fd27b363f482cf67300b8"),
                "role" : "administrator"
            }, 
            {
                "employees" : [ 
                    ObjectId("5d3aeac1ea162253845ac7f8"), 
                    ObjectId("5d3aeac1ea162253845ac7f9")
                ],
                "company" : ObjectId("5d3fd27b363f482cf67300b9"),
                "role" : "administrator"
            }, 
            {
                "employees" : [ 
                    ObjectId("5d3aeac1ea162253845ac7f8"), 
                    ObjectId("5d3aeac1ea162253845ac7f9")
                ],
                "company" : ObjectId("5d3fd27b363f482cf67300ba"),
                "role" : "administrator"
            }
        ],
        "agency" : ObjectId("5d3fd27b363f482cf67300b6")
    }
],
"createdAt" : ISODate("2019-07-30T05:15:39.345Z"),
"updatedAt" : ISODate("2019-07-30T05:15:39.451Z"),
"__v" : 0
}

我想根据_id和agency.agency的条件更新employee数组。如果员工存在,则不添加或添加

我尝试了以下方法,但对我不起作用

modelName.findOneAndUpdate({ ' _id': ObjectId("5d3fd27b363f482cf67300b5"), 'agencies.agency': ObjectId("5d3fd27b363f482cf67300b6") }, { $addToSet: { "agencies.$.employees": ObjectId("5d3aeac1ea162253845ac7f1"), "agencies.$.company_role.employees": ObjectId("5d3aeac1ea162253845ac7f1") } },{new:true})

我正在使用猫鼬更新记录

米克尔

您可以使用两个有用的更新运算符:$ [<identifier>]$ []

modelName.findOneAndUpdate({ '_id': ObjectId("5d3fd27b363f482cf67300b5") },
    { 
        $addToSet: { 
            "agencies.$[agency].employees": ObjectId("5d3aeac1ea162253845ac7f1"),
            "agencies.$[agency].company_role.$[].employees": ObjectId("5d3aeac1ea162253845ac7f1"),
        } 
    },
    {
        arrayFilters: [ { "agency.agency": ObjectId("5d3fd27b363f482cf67300b6") } ]
    })

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章