English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Atualização de Documentos MongoDB

MongoDB update()e save()Usado para atualizar documentos para a coleção. O método update() atualiza os valores dos documentos existentes, enquanto o método save() substitui o documento existente pelo documento passado no método save().

Método MongoDB Update()

O método update() atualiza os valores dos documentos existentes.

update()A sintaxe básica do método é a seguinte-

>db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA)

Supondo que o conjunto mycol tenha os seguintes dados.

{ "_id": ObjectId(5983548781331adf45ec5), "title": "introdução ao MongoDB"
{ "_id": ObjectId(5983548781331adf45ec6), "title": "introdução ao NoSQL"
{ "_id": ObjectId(5983548781331adf45ec7)), "title": "introdução ao novo tutorial"

O exemplo a seguir define o título do documento "visão geral MongoDB" para o novo título "novo tutorial MongoDB".

>db.mycol.update({'title': 'visão geral MongoDB'}, {$set: {'title': 'novo tutorial MongoDB'}})
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 )
>db.mycol.find()
{ "_id": ObjectId(5983548781331adf45ec5), "title": "novo tutorial MongoDB"
{ "_id": ObjectId(5983548781331adf45ec6), "title": "introdução ao NoSQL"
{ "_id": ObjectId(5983548781331adf45ec7)), "title": "introdução ao novo tutorial"
>

Por padrão, o MongoDB atualiza apenas um documento. Para atualizar vários documentos, você precisa definir o parâmetro "multi" como true.

>db.mycol.update({'title':'introdução a NoSQL'},
   {$set:{'title':'novo tutorial MongoDB'}},{multi:true})

Método Save() do MongoDB

save()O método usa o documento novo passado no método save() para substituir o documento existente.

MongoDB save()A sintaxe básica é a seguinte-

>db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})

O exemplo a seguir usará '_id'5983548781331adf45ec5'substituir documento.

   {
      "_id" : ObjectId("507f191e810c19729de860ea 
		"title":"novo tópico do tutorial",
      "por":"tutorial básico"
   }

WriteResult({
	"nMatched": 0,
	"nUpserted": : 1,
	"nModified": 0,
	"_id" : ObjectId("507f191e810c19729de860ea)
)
>db.mycol.find()
{"_id" : ObjectId("507f191e810c19729de860e6), "title":"nova introdução ao tutorial"
   "por":"Tutorials Point"
{"_id" : ObjectId("507f191e810c19729de860e6), "title":"introdução a NoSQL"
{"_id" : ObjectId("507f191e810c19729de860e6), "title":"novo tópico do tutorial"
>

Método findOneAndUpdate() do MongoDB

findOneAndUpdate()O método atualiza os valores de um documento existente.

findOneAndUpdate()A sintaxe básica do método é a seguinte-

>db.COLLECTION_NAME.findOneAndUpdate(SELECTIOIN_CRITERIA, UPDATED_DATA)

Supondo que criamos um conjunto chamado empDetails e inserimos três documentos, conforme mostrado a seguir-

> db.empDetails.insertMany(
	[
		{
			Primeiro Nome: "Radhika",
			Nome: "Sharma",
			Idade: "26",
			e_mail: "[email protected]",
			phone: "9000012345"
		},
		{
			Primeiro Nome: "Rachel",
			Nome: "Christopher",
			Idade: "27",
			e_mail: "[email protected]",
			phone: "9000054321"
		},
		{
			Primeiro Nome: "Fathima",
			Nome: "Sheik",
			Idade: "24",
			e_mail: "[email protected]",
			phone: "9000054321"
		}
	]

以下示例更新名称为“ Radhika”的文档的年龄和电子邮件值。

> db.empDetails.findOneAndUpdate(
	{First_Name: 'Radhika'},
	{ $set: { Age: '30',e_mail: '[email protected]'}}

{
	"_id" : ObjectId("5dd6636870fb13eec3963bf5"),
	"First_Name" : "Radhika",
	"Last_Name" : "Sharma",
	"Age" : "30",
	"e_mail" : "[email protected]",
	"phone" : "9000012345"
}

MongoDB updateOne()方法

此方法更新与给定过滤器匹配的单个文档。

updateOne()方法的基本语法如下:

>db.COLLECTION_NAME.updateOne(, )

> db.empDetails.updateOne(
	{First_Name: 'Radhika'},
	{ $set: { Age: '30',e_mail: '[email protected]'}}

 1, "modifiedCount" : 0 }
>

	25
	{ \

 2, \ 2 }

Se usar o método find como mostrado a seguir para buscar o conteúdo do documento, então é possível ver os valores atualizados-

> db.empDetails.find()
{"_id" : ObjectId("5dd6636870fb13eec3963bf5"), \9000012345" }
{"_id" : ObjectId("5dd6636870fb13eec3963bf6"), "First_Name" : "Rachel", "Last_Name" : "Christopher", "Age" : "00", "e_mail" : "Rachel_Christopher."}}[email protected]", "phone" : "9000054321" }
{"_id" : ObjectId("5dd6636870fb13eec3963bf7"), "First_Name" : "Fathima", "Last_Name" : "Sheik", "Age" : "24", "e_mail" : "[email protected]", "phone" : "9000054321" }
>