MongoDB更新文件
![]()
目录
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}})

如果更新操作不匹配集合中的文档怎么办?
如果更新操作没有匹配到集合中的任何文档,可以将upsert选项设置为true,以立即插入一个符合更新查询的新文档到集合中。
db.Employees.update(
{type: "PartTime"},
{$set:{salary:1500000}},
{upsert : true}.
)
WriteResult ("nMatched": 0; "nUpserted": 1; "nModified":1)
upsert也体现在前面程序的写入结果中。
MongoDB的upsert操作被利用来保存文档到集合中。
如果文档符合查询条件,它将被更新;否则,它将作为一个新的文档被添加到集合中。