MongoDB 4.2 使用另外一个字段更新字段的新方法

时间:2022-06-01 17:57:02

从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的别名。