MongoDB 更新文档

MongoDB 提供 update() 命令来更新集合的文档。要仅更新要更新的文档,可以向更新语句添加条件,以便仅更新选定的文档。

命令中的基本参数是需要更新文档的条件,下一个是需要执行的修改。

以下示例显示了如何完成此操作。

步骤 1: 发出更新命令

步骤 2: 选择你要用来决定需要更新哪个文档的条件。在我们的示例中,我们想要更新 Employee id 为 22 的文档。

步骤 3: 使用 set 命令修改字段名称

步骤 4: 选择要修改的字段名称并相应地输入新值。

db.Employee.update(
{"Employeeid" : 1},
{$set: { "EmployeeName" : "NewMartin"}});

如果命令执行成功,将显示以下输出

输出:

> db.Employee.updated(
... {"Employeeid" : ì}, 
... { $set:' { "EmployeeName" : "NewMartin" } } ); 
WriteResult({ "nMatched" : 1, "nupserted" : 0, "nModified" : 1 })

输出清楚地显示一条记录与条件匹配,因此修改了相关的字段值。

更新多个值

要确保在 MongoDB 中同时更新多个文档,你需要使用 multi 选项,否则默认情况下一次只修改一个文档。

以下示例显示了如何完成此操作。

在此示例中,我们将首先找到 Employee id 为 1 的文档,并将 Employee 名称从 Martin 更改为 NewMartin

步骤 1: 发出更新命令

步骤 2: 选择你要用来决定需要更新哪个文档的条件。在我们的示例中,我们希望更新 Employee id 为 1 的文档。

步骤 3: 选择要修改的字段名称并相应地输入新值。

db.Employee.update
(
	{
		Employeeid : 1
	},
	{
		$set :
		{
			"EmployeeName" : "NewMartin"
			"Employeeid" : 22
		}
	}
)

如果命令执行成功,并且运行 find 命令以搜索 Employee id 为 22 的文档,你将看到以下输出将显示

输出:

> db.Employee.find({"Employeeid" : 22}).forEach(printjson)
{
	"_id" : objectId("563479cc8a8a4246bd27d784"), 
	"Employeeid" : 22, 
	"EmployeeName" : "NewMartin"
}

输出清楚地显示一条记录与条件匹配,因此修改了相关的字段值。