从MongoDB 4.2开始,db.collection.update()方法允许接受聚合管道(aggregation pipeline),最终就可以使用聚合管道实现“ 使用另外一个字段更新字段”的操作。
示例如下:
// { firstName: "Hello", lastName: "World" }
db.collection.update(
{},
[{ $set: { name: { $concat: [ "$firstName", " ", "$lastName" ] } } }],
{ multi: true }
)
// { "firstName" : "Hello", "lastName" : "World", "name" : "Hello World" }
- 第一个参数{}是用来做查询条件,即符合条件的文档才允许更新
- 第二参数[{ $set: { name: { ... } }],是一个更新的聚合管道,注意,管道里的值使用中括号[]括起来。
- 第三个参数{ multi: true },表示更新多个文档,否在只会更新查询到的第一个文档。
注意:在聚合管道里,$set是新增的聚合操作符,是$addFields的别名。