findOneAndReplace

整体替换一条记录,并返回替换前的记录。

方法定义

findOneAndReplace(filter: object, replacement: object, options?: object): Promise<MongoResult>

请求参数

字段名

类型

必填

说明

filter

Object

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

replacement

Object

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

options

Object

控制项。

options 参数定义:

字段名

类型

必填

说明

sort

Object

排序规则。

upsert

Boolean

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

projection

Object

查询后过滤的字段。

maxTimeMS

Number

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

示例

  • clubs集合中查找 score字段值大于20000的第一条记录,并将其替换为 { team: "Therapeutic Hamsters", score: 22250}

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

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