彻底搞懂Mongoose中update,updateOne,updateMany和findOneAndUpdate

  1. update 已被弃用,返回{n:1, nModified:1}
    返回{n:1, nModified:1}
  2. 更新一个就用updateOne,是对update的封装,不支持{multi:true}属性,加了也没用,返回{n:1, nModified:1}
    返回{n:1, nModified:1}
  3. 更新多个就用updateMany,是对update的封装,自动加入了{multi:true}属性,设为false也不行,返回{n:1, nModified:1}
    返回{n:1, nModified:1}
  4. findOneAndUpdate,实际调用的是findAndModify,这个的好处是会返回文档,设置{new: true}返回更新后的文档,默认为false.
    如果想用原生的findOneAndUpdate, 就设置mongoose.set('useFindAndModify', false);
    或者
    mongoose.connect(uri, { useFindAndModify: false });
    如果用原生findOneAndUpdate,可以设置returnNewDocument属性,返回修改后的值
  5. mongoose里没有findAndModify方法

总结:尽量用updateOne,updateMany方法,他们都是对update的封装,如果需要返回值就用findOneAndUpdate方法,mongoose中没有findAndModify方法.

你可能感兴趣的:(数据库)