您可以执行以下操作:
const doc = await users.findOneAndUpdate(
{
email: user.email,
campaigns: {
$elemMatch:{
name: campaignname
}
}
},
{
$push: {
"campaigns.$.leads": {
$each: [
{key: 'value'},
{key: 'value'}
]
}
}
}, {new: true}); //< {new: true} is mongoose specific
或者,如果要推送的对象数组已经构建,则可以使用扩展语法:
const arr = [{key: 'value'}, {key: 'value'}]
const doc = await users.findOneAndUpdate(
{
email: user.email,
campaigns: {
$elemMatch:{
name: campaignname
}
}
},
{
$push: {
"campaigns.$.leads": {
$each: [
...arr
]
}
}
}, {new: true}); //< {new: true} is mongoose specific
要从campaigns.leads
数组中删除这些对象中的一个,则可以使用$pull
按{key: 'value'}
Select 它们,如下所示:
const doc = await users.findOneAndUpdate(
{
email: user.email,
campaigns: {
$elemMatch:{
name: campaignname
}
}
},
{
$pull: {
"campaigns.$.leads": {
key: 'value'
}
}
}, {new: true});
或者,如果只想将它们全部删除,可以将campaigns.leads
设置为空数组,如下所示:
const doc = await users.findOneAndUpdate(
{
email: user.email,
campaigns: {
$elemMatch:{
name: campaignname
}
}
},
{
$set: {
"campaigns.$.leads": []
}
}, {new: true});