MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB - Актуализиране на документ

Използвайте update() метод или save() метод за актуализиране на документи в MongoDB.

В MongoDB и двата update() метод и save() методът може да се използва за актуализиране на документ.

update() методът актуализира стойностите в съществуващ документ или документи, докато save() метод заменя документ с документа, подаден като параметър.

Въпреки това, update() методът може също да замени целия документ, в зависимост от параметъра, който е прехвърлен.

update() Метод

Ето пример за update() метод.

Първо, нека изберем запис за актуализиране:

db.musicians.find({ _id: 6 }).pretty()

Резултат:

{
	"_id" : 6,
	"name" : "Jeff Martin",
	"instrument" : "Vocals",
	"born" : 1969
}

Джеф всъщност прави много повече от просто да пее. Така че нека добавим още някои инструменти. Ще използваме $set оператор за актуализиране на едно поле.

db.musicians.update(
        { _id: 6 }, 
        { $set:{ instrument : [ "Vocals", "Guitar", "Sitar" ] } }
    )

Резултат:

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

Сега, ако направим друга заявка, виждаме, че документът е актуализиран, както е посочено:

db.musicians.find({ _id: 6 }).pretty()

Резултат:

{
	"_id" : 6,
	"name" : "Jeff Martin",
	"instrument" : [
		"Vocals",
		"Guitar",
		"Sitar"
	],
	"born" : 1969
}

Още няколко опции:

  • Ако полето не съществува, $set операторът ще добави ново поле с посочената стойност, при условие че новото поле не нарушава ограничение за тип.
  • Можете също да използвате { upsert: true } за създаване на нов документ, когато нито един документ не съответства на заявката.
  • Можете да използвате { multi: true } за да актуализирате множество документи, които отговарят на критериите за заявка. По подразбиране тази опция е настроена на false , така че само един документ се актуализира, ако не го зададете на true .

save() Метод

save() методът е кръстоска между update() и insert() . Когато използвате save() метод, ако документът съществува, той ще бъде актуализиран. Ако не съществува, ще бъде създаден.

Ако не посочите _id поле, MongoDB ще създаде документ с _id който съдържа ObjectId стойност (съгласно insert() ).

Ако посочите _id поле, той извършва актуализация с { upsert: true } , което означава, че създава нов документ, ако нито един документ не съответства на заявката.

В момента нямаме документи в нашите производители колекция. Нека създадем такъв с помощта на save() метод:

db.producers.save({ _id: 1, name: "Bob Rock" })

Резултат:

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

Сега, ако търсим производители колекция, виждаме новосъздадения ни запис:

db.producers.find()

Резултат:

{ "_id" : 1, "name" : "Bob Rock" }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb неуспешен:грешка при свързване към db сървър:няма достъпни сървъри

  2. Mongoose Schema не е регистриран за модел

  3. Как да проверите дали даден индекс е скрит в MongoDB

  4. Самостоятелно хостван MongoDB

  5. MongoDB агрегат в рамките на ежедневно групиране