MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB - Aktualisieren Sie ein Dokument

Verwenden Sie das update() Methode oder save() Methode zum Aktualisieren von Dokumenten in MongoDB.

In MongoDB sind sowohl das update() -Methode und save() Methode kann verwendet werden, um ein Dokument zu aktualisieren.

Das update() -Methode aktualisiert Werte in einem vorhandenen Dokument oder Dokumenten, während die save() Methode ersetzt ein Dokument durch das als Parameter übergebene Dokument.

Allerdings ist das update() -Methode kann je nach übergebenem Parameter auch das gesamte Dokument ersetzen.

Das update() Methode

Hier ist ein Beispiel für update() Methode.

Lassen Sie uns zunächst einen zu aktualisierenden Datensatz auswählen:

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

Ergebnis:

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

Jeff macht eigentlich viel mehr als nur zu singen. Also fügen wir noch ein paar Instrumente hinzu. Wir verwenden den $set Operator, um ein einzelnes Feld zu aktualisieren.

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

Ergebnis:

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

Wenn wir nun eine weitere Abfrage durchführen, sehen wir, dass das Dokument wie angegeben aktualisiert wurde:

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

Ergebnis:

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

Einige weitere Optionen:

  • Wenn das Feld nicht existiert, wird $set -Operator fügt ein neues Feld mit dem angegebenen Wert hinzu, vorausgesetzt, dass das neue Feld keine Typbeschränkung verletzt.
  • Sie können auch { upsert: true } verwenden um ein neues Dokument zu erstellen, wenn kein Dokument der Abfrage entspricht.
  • Sie können { multi: true } verwenden um mehrere Dokumente zu aktualisieren, die die Abfragekriterien erfüllen. Standardmäßig ist diese Option auf false gesetzt , sodass nur ein Dokument aktualisiert wird, wenn Sie es nicht auf true setzen .

Das save() Methode

Das save() Methode ist eine Kreuzung zwischen update() und insert() . Wenn Sie save() verwenden -Methode, wenn das Dokument existiert, wird es aktualisiert. Wenn es nicht existiert, wird es erstellt.

Wenn Sie keine _id angeben Feld erstellt MongoDB ein Dokument mit einer _id die eine ObjectId enthält Wert (gemäß einem insert() ).

Wenn Sie eine _id angeben Feld, führt es eine Aktualisierung mit { upsert: true } durch , was bedeutet, dass ein neues Dokument erstellt wird, wenn kein Dokument mit der Abfrage übereinstimmt.

Wir haben derzeit keine Dokumente in unseren Produzenten Sammlung. Lassen Sie uns eine mit save() erstellen Methode:

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

Ergebnis:

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

Wenn wir nun die Produzenten durchsuchen Sammlung sehen wir unseren neu erstellten Datensatz:

db.producers.find()

Ergebnis:

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