查询并整体更新一条记录。
方法定义
findOneAndUpdate(filter: object, update: object, options?: object): Promise<MongoResult>
请求参数
字段名 | 类型 | 是否必选 | 说明 |
---|---|---|---|
| Object | 是 | 数据库操作时的查询条件。 |
| Object | 是 | 数据库操作时的替换对象。 |
| Object | 否 | 控制项。 |
options
参数定义:
字段名 | 类型 | 是否必选 | 说明 |
---|---|---|---|
| Object | 否 | 排序规则。 |
| Boolean | 否 | 如果查找不到对应文档,是否插入。默认值: |
| Object | 否 | 查询后过滤的字段
|
| Boolean | 否 | 是否返回修改后对象取值
|
| 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
字段也会返回)。同时将该记录的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);
文档内容是否对您有帮助?