MongoDB更新文档教程

180 阅读4分钟

MongoDB更新文件

MongoDB Update Document

目录

MongoDB是现代通用数据库平台的先驱,允许应用程序和创建它们的开发人员利用软件和数据的力量。MongoDB总部位于纽约,在100多个国家拥有超过33000个客户。超过2.4亿人下载了MongoDB数据库平台,超过150万人报名参加MongoDB大学课程。

在这篇文章中,我们将讨论如何在MongoDB中更新一个文档。

什么是MongoDB更新文档?

为了在MongoDB中更新一个文档,我们使用update()方法。

update()方法会刷新MongoDB集合中现有文档的值。当你更新文档时,_id字段的值不会改变。db.collection.update()方法,默认情况下,只更新一个文档。使用multi: true选项来更新所有符合查询的文档。

这种方法可以用来更新一个文档,也可以同时更新多个文档。

语法

db.COLLECTION\_NAME.update({SELECTION\_CRITERIA}, {$set:{UPDATED\_DATA}}, {

     upsert: <boolean>,

     multi: <boolean>,

     writeConcern: <document>,

     collation: <document>,

     arrayFilters: \[ <filterdocument1>, ... \],

     hint:  <document|string>        

   })

})

现在,让我们讨论一下MongoDB中update()方法所需的参数。

MongoDB更新文档的参数

MongoDB update()方法所需的一些参数如下所示。

不可协商的参数

  • 文档中的旧值是第一个参数。与JSON对象类似,文档是由文件和值对组成的。
  • 要改变下一个指定的文档值,第二个参数必须有$set关键字。
  • 如果你不想使用,第三个参数可以留空,也就是说,它是可选的。

可选参数

  • 整理方式:这描述了操作中使用的整理方式。用户可以轻松地设置特定语言的字符串比较标准,如字母大小写和重音符号的规则。
  • Upsert:Upset参数的默认值是false。如果它变为true,如果没有其他文档符合更新方法的标准,它将在集合中创建一个新的文档。
  • hint:它是一个文件或字段,指定了将用于支持过滤器的索引。它可以接受一个索引规范文件或索引名称字符串,如果你指定一个不存在的索引,它将返回一个错误。
  • multi:这个参数的默认值是false。当这个参数设置为true时,更新方法会更新所有满足查询条件的文档。否则,只有一个文档会被更新。
  • arrayFilters:这是一个过滤文件的数组,告诉对数组字段的更新操作要修改哪些数组项。这个参数的类型是数组。
  • writeConcern:只有当你不想利用默认的写关注时才使用writeConcern。这个选项的类型是文档。

现在让我们讨论一下如何使用MongoDB更新单个文档。

如何更新单个文档?

要更新MongoDB中的单个文档,需要遵循以下步骤。

  • 首先,利用update()方法。

语法

db.collection.update(query, update, options)
  • 指定当文档被更新时将被应用到的条件。在下面的例子中,我们需要编辑雇员ID为100的文档。
  • 要更新这些值,请使用$set操作符。
Employee\_Name = "Keerthana Suresh"

db.Employees.update(

{"Emp\_ID" :100},

{$set:{"Employee\_Name" : "Keerthana Suresh"}})。

WriteResult({"nMatched": 1, "nUpserted: 0, "nModified": 1 })

现在我们已经了解了如何在MongoDB中更新一个文档,让我们看看如何使用MongoDB更新多个文档。

如何更新多个文档?

在MongoDB中,我们必须使用多选项来同时更新多个文档。否则,默认情况下一次只能更新一个文档。

下面的例子演示了如何更新大量的文档。在这个例子中,我们将找到Emp ID id为10的文档,将Emp ID修改为32,并将雇员姓名改为 "Stacy Fowler"。

按照下面的步骤来更新多个文档。

  • 首先,使用MongoDB的update()方法。

语法

db.collection.update(query, update, options)
  • 指出将用于更新文档的条件。在下面的例子中,我们需要编辑雇员ID为10的文档。
  • 要更新这些值,请使用$set操作符。
Employee\_Name ="Stacy Fowler"

Emp\_ID = 32

db.Employees.update({ Emp\_ID : 10},{$set :{"Employee\_Name" : "Stacy Fowler", " Emp\_ID" : 32}})

MongoDB_Update_Doc_2

如果更新操作不匹配集合中的文档怎么办?

如果更新操作没有匹配到集合中的任何文档,可以将upsert选项设置为true,以立即插入一个符合更新查询的新文档到集合中。

db.Employees.update(

{type: "PartTime"},

{$set:{salary:1500000}},

{upsert : true}.

)

WriteResult ("nMatched": 0; "nUpserted": 1; "nModified":1)

upsert也体现在前面程序的写入结果中。

MongoDB的upsert操作被利用来保存文档到集合中。

如果文档符合查询条件,它将被更新;否则,它将作为一个新的文档被添加到集合中。