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

Учебник MongoDB для начинающих

Учебник MongoDB для продвинутых

Обновление документа в MongoDB

MongoDB update()и save()Метод используется для обновления документа в集合е. Метод update() обновляет значения существующего документа, а метод save() заменяет существующий документ документом, переданным в метод save().

Метод MongoDB Update()

Метод update() обновляет значения существующего документа.

Грамматика

update()Основная грамматика метода:

update()

Пример

>db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA)

Предположим, что у коллекции mycol есть следующие данные.
{"_id" : ObjectId(5983548781331adf45ec6), "title":"Введение в NoSQL"}
{"_id" : ObjectId(5983548781331adf45ec7), "title":"Новая учебная программа MongoDB"}

{"_id" : ObjectId(5983548781331adf45ec5), "title":"Введение в MongoDB"}

Ниже приведен пример изменения заголовка документа с названием "MongoDB Overview" на новый заголовок "New MongoDB Tutorial".
>db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'Новая MongoDB учебная программа'}})
>db.mycol.find()
{"_id" : ObjectId(5983548781331adf45ec5), "title":"Новая MongoDB учебная программа"}
{"_id" : ObjectId(5983548781331adf45ec6), "title":"Введение в NoSQL"}
{"_id" : ObjectId(5983548781331adf45ec7), "title":"Новая учебная программа MongoDB"}
>

По умолчанию, MongoDB обновляет только один документ. Чтобы обновить несколько документов, вам нужно установить параметр "multi" в true.

>db.mycol.update({'title':'MongoDB 简介'},
   {$set:{'title':'Новая MongoDB教程'},multi:true})

Метод MongoDB Save()

save()Метод использует метод save() для замены существующего документа новым документом.

Грамматика

MongoDB save()Основная грамматика метода представлена следующим образом-

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

Пример

Ниже приведен пример замены документа с _id '5983548781331adf45ec5'.

>db.mycol.save(
   {
      "_id" : ObjectId("507f191e810c19729de860ea"), 
		"title":"Новая тема教程",
      "by":"Основной курс"
   }
)
WriteResult({
	"nMatched" : 0,
	"nUpserted" : 1,
	"nModified" : 0,
	"_id" : ObjectId("507f191e810c19729de860ea")
)
>db.mycol.find()
{ "_id" : ObjectId("507f191e810c19729de860e6"), "title":"новая аннотация учебника",
   "by":"Tutorials Point"
{ "_id" : ObjectId("507f191e810c19729de860e6"), "title":"Введение в NoSQL"}
{ "_id" : ObjectId("507f191e810c19729de860e6"), "title":"новая тема учебника"}
>

Метод MongoDB findOneAndUpdate()

findOneAndUpdate()Метод обновляет значения существующих документов.

Грамматика

findOneAndUpdate()Основная грамматика метода:

>db.COLLECTION_NAME.findOneAndUpdate(SELECTIOIN_CRITERIA, UPDATED_DATA)

Пример

Предположим, что мы создали коллекцию с именем empDetails и добавили в нее три документа, как показано ниже:

> db.empDetails.insertMany(
	[
		{
			First_Name: "Radhika",
			Last_Name: "Sharma",
			Age: "26",
			e_mail: "[email protected]",
			phone: "9000012345"
		}
		{
			First_Name: "Rachel",
			Last_Name: "Christopher",
			Age: "27",
			e_mail: "[email protected]",
			phone: "9000054321"
		}
		{
			First_Name: "Fathima",
			Last_Name: "Sheik",
			Age: "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(<filter>, <update>)

Пример

> db.empDetails.updateOne(
	{"First_Name" : "Radhika"},
	{"$set" : { "Age" : '30', "e_mail" : "[email protected]"}}
)
{"acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 0}
>

Метод MongoDB updateMany()

Метод updateMany() обновляет все документы, соответствующие заданному фильтру.

Грамматика

Основная грамматика метода updateMany() такая:

> db.COLLECTION_NAME.update(<filter>, <update>)

Пример

> db.empDetails.updateMany(
	{"Age" : { "$gt" : "25" }},
	{"$set" : { "Age" : '00'}}
)
{"acknowledged" : true, "matchedCount" : 2, "modifiedCount" : 2}

Если использовать следующий метод find для поиска содержимого документа, можно увидеть обновленные значения-

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