findOneAndUpdate

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

方法定义

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

请求参数

字段名

类型

是否必选

说明

filter

Object

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

update

Object

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

options

Object

控制项。

options 参数定义:

字段名

类型

是否必选

说明

sort

Object

排序规则。

upsert

Boolean

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

projection

Object

查询后过滤的字段

  • 0:表示不返回。

  • 1:表示返回。

returnNewDocument

Boolean

是否返回修改后对象取值

  • true:表示返回更新后的文档。

  • false(默认):表示返回更新前的文档。

maxTimeMS

Number

执行时间(毫秒),默认值:1000,最大值:3000。

示例

  • 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 字段也会返回)。同时将该记录的nameage 字段更新,其他字段默认保留。若没有找到符合条件的记录,就将 { 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);