[英]Mongoose findOneAndUpdate with condition
我有一个像这样的简单模型,
const userSchema = new mongoose.Schema({
name:String,
personelID:Number,
departments:{
type:[String],
},
})
一个用户可以在多个部门工作。 对于新部门,如果不包括我推新部门,我首先控制现有部门阵列。
以基本的方式我可以做到这一点
User.findOne({personelID:ID},(err,usr)=>{
if(err) return console.error(err);
if(usr.departments!==undefined){
if(!usr.departments.includes(department))
{
usr.departments.push(department);
usr.save();
}
}
})
它没有问题。 但是我可以用这样更简单的方法来做到这一点吗?
User.findOneAndUpdate(
{personelID:ID, 'departments is not include newDepartment'},
{departments:departments.push(newDepartment)}
(callback) => {}
)
您可以将不等于特定部门的部门的条件放在查询部分, $ne
也将管理数组字段中的条件,如果找不到部门,则将其推送,否则将跳过推送操作。
User.findOneAndUpdate(
{
personelID: ID,
departments: { $ne: department }
},
{ $push: { departments: department } }
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.