[英]update embedded documents of arrays of arrays object in mongodb
I have a following document我有以下文件
{
"_id" : ObjectId("5d3fd27b363f482cf67300b5"),
"is_active" : true,
"is_delete" : false,
"email" : "qwerty@adit.com",
"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
}
I want to update the employees array based on the condition of the _id and agencies.agency.我想根据_id 和agency.agency 的条件更新员工数组。 if employees exists then not add or else add it如果员工存在则不添加或添加它
I have tried as follows but it doesn't work for me我试过如下,但对我不起作用
modelName.findOneAndUpdate({ ' _id': ObjectId("5d3fd27b363f482cf67300b5"), 'agencies.agency': ObjectId("5d3fd27b363f482cf67300b6") }, { $addToSet: { "agencies.$.employees": ObjectId("5d3aeac1ea162253845ac7f1"), "agencies.$.company_role.employees": ObjectId("5d3aeac1ea162253845ac7f1") } },{new:true})
I am using mongoose to update record我正在使用猫鼬更新记录
Two useful update operators you can use: $[< identifier > ] and $[] :您可以使用两个有用的更新运算符: $[< identifier > ]和$[] :
modelName.findOneAndUpdate({ '_id': ObjectId("5d3fd27b363f482cf67300b5") },
{
$addToSet: {
"agencies.$[agency].employees": ObjectId("5d3aeac1ea162253845ac7f1"),
"agencies.$[agency].company_role.$[].employees": ObjectId("5d3aeac1ea162253845ac7f1"),
}
},
{
arrayFilters: [ { "agency.agency": ObjectId("5d3fd27b363f482cf67300b6") } ]
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.