簡體   English   中英

Mongoose findOneAndUpdate 有條件

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM