繁体   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