[英]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.