全部产品

findOneAndUpdate

更新时间:2020-12-23 18:19

查询并整体更新一条记录。

方法定义

findOneAndUpdate(filter: object, update: object, options?: object): Promise<MongoResult>

请求参数

字段

类型

必填

描述

filter

Object

数据库操作时的查询条件。

update

Object

数据库操作时的替换对象。

options

Object

控制项。

options参数定义:

字段

类型

必填

描述

options.sort

Object

排序规则。

options.upsert

Boolean

如果查找不到对应文档,是否插入。默认值:false。

options.projection

Object

查询后过滤的字段。

  • 0:表示不返回。

  • 1:表示返回。

示例

  • 从clubs集合中查找score字段值大于20000的第一条记录,并将其team字段设置为Therapeutic Hamsters,score字段设置为22250,其他字段保持不变。

    mpserverless.db.collection("clubs")
      .findOneAndUpdate({ 
         "score": { $gt: 20000 } 
      }, {
       $set: { 
         "team": "Therapeutic Hamsters", 
         "score": 22250,
       }
      })
      .then(res => {})
      .catch(console.error);
  • 在users集合中查找age字段值大于18的按照姓名升序排列的第一条记录,返回该记录的name字段(_id字段也会返回)。同时将该记录的name和age字段更新,其他字段默认保留。若没有找到符合条件的记录,就将 { name: "Smith",age: 22 } 作为新记录插入。

    mpserverless.db.collection("users").findOneAndUpdate({
        age: {$gt: 18}
    }, {
      $set: {
      name: "Smith",
      age: 22,
      }
    }, {
        projection: {name: 1},
        sort: {name: 1},
        upsert: true,
    })
    .then(res => {})
    .catch(console.error);