📜  MongoDB – Update() 方法(1)

📅  最后修改于: 2023-12-03 15:32:56.944000             🧑  作者: Mango

MongoDB – Update() 方法

简介

update() 方法是 MongoDB 中用于更新文档的方法。它允许开发者更新一个或多个文档,也可以使用一些选项来控制更新的行为。

语法

update() 方法的语法如下:

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)

其中:

  • <query> :用于匹配要更新的文档的查询条件,
  • <update> :用于指定如何更新匹配的文档的更新操作,
  • upsert :可选参数,表示如果没有匹配的文档,则插入一个新文档,默认为 false
  • multi :可选参数,用于指定是否更新所有匹配到的文档,默认为 false
  • writeConcern :可选参数,用于指定操作的确认级别。
示例

假设我们有以下集合:

> db.myCollection.find()
{ "_id" : ObjectId("615274631e31ba4297497ebd"), "name" : "John", "age" : 30 }
{ "_id" : ObjectId("615274891e31ba4297497ebe"), "name" : "Jane", "age" : 25 }
{ "_id" : ObjectId("615274c31e31ba4297497ebf"), "name" : "Bob", "age" : 40 }

我们可以使用 update() 方法来更新文档,例如将 age 属性大于等于 30 的所有文档的 name 属性改为 "Tom"

> db.myCollection.update(
     { age: { $gte: 30 } },
     { $set: { name: "Tom" } },
     { multi: true }
  )

执行以上代码后,我们可以看到集合中的文档已经被更新了。

> db.myCollection.find()
{ "_id" : ObjectId("615274631e31ba4297497ebd"), "name" : "Tom", "age" : 30 }
{ "_id" : ObjectId("615274891e31ba4297497ebe"), "name" : "Jane", "age" : 25 }
{ "_id" : ObjectId("615274c31e31ba4297497ebf"), "name" : "Tom", "age" : 40 }
注意事项
  • update() 方法更新的文档可能会增长,导致内存和存储空间的消耗,因此需要额外的注意;
  • update() 方法不会自动删除文档的任何属性,除非更新操作显式地指定了这样做;
  • update() 方法更新一个文档的权利是根据完成查询操作时,该进程拥有当前所选文件的独占访问权来执行的。