Verwenden Sie die Methode findOneAndUpdate() in MongoDB
-
Verwenden Sie die
findOneAndUpdate()
-Methode in MongoDB -
Verwenden Sie die Methode
findOneAndUpdate()
, um das erste übereinstimmende Dokument zu aktualisieren -
Verwenden Sie die Methode
findOneAndUpdate()
, um den Wert des eingebetteten Dokuments zu aktualisieren -
Verwenden Sie die Methode
findOneAndUpdate()
, um das erste übereinstimmende Dokument zu aktualisieren und das aktualisierte Dokument zurückzugeben - Abschluss
Dieser Artikel stellt die Methode findOneAndUpdate()
in MongoDB vor. Wir werden diese Methode verwenden, um die ersten übereinstimmenden und eingebetteten Dokumente zu aktualisieren.
Verwenden Sie die findOneAndUpdate()
-Methode in MongoDB
Die Methode db.collection.findOneAndUpdate()
aktualisiert das passende Dokument der Sammlung nach einem Auswahlkriterium. Diese Methode aktualisiert nur das erste Dokument, das den Auswahlkriterien entspricht, wenn mehr als ein Dokument übereinstimmt.
Der Wert des Felds _id
ändert sich nicht, wenn Sie das Dokument aktualisieren.
Diese Methode gibt das Originaldokument zurück; Sie müssen jedoch den Wert des Parameters returnNewDocument
auf true
setzen, wenn Sie möchten, dass das aktualisierte Dokument zurückgegeben wird.
Sie können diese Methode verwenden, um eingebettete Dokumente zu ersetzen. Dieser Ansatz kann auch bei Transaktionen mit mehreren Dokumenten verwendet werden.
Syntax:
db.collection.findOneAndUpdate(
selection_criteria: <document>,
update_data: <document>,
{
projection: <document>,
sort: <document>,
maxTimeMS: <number>,
upsert: <boolean>,
returnNewDocument: <boolean>,
collation: <document>,
arrayFilters: [ <filterdocument1>, … ]
})
Parameter:
- Der erste Parameter
selection_criteria
ist das Auswahlkriterium für die Aktualisierung. Der Typ für diesen Parameter ist ein Dokument. - Der zweite Parameter
update_data
ist ein zu aktualisierendes Dokument. Der Typ für diesen Parameter ist ein Dokument. - Der dritte Parameter ist optional.
Optionale Parameter:
-
Projektion
: Der Typ für diesen Parameter ist ein Dokument. Der Projektionsparameter bestimmt, welche Felder an die übereinstimmenden Dokumente zurückgegeben werden.Dieses Dokument nimmt die folgenden Werte an:
{ field1: <boolean>, field2: <boolean> ... }
Wenn der Feldwert
1
odertrue
ist, zeigt dies an, dass das Feld enthalten ist, und wenn der Feldwert0
oderfalse
ist, ist das Feld ausgeschlossen.
-
sortieren
: Dies bestimmt, welches Dokument die Operation ändert, wenn die Abfrage mehrere Dokumente auswählt. Die Methodedb.collection.findOneAndUpdate()
aktualisiert das erste Dokument in der durch dieses Argument angegebenen Sortierreihenfolge.Der Typ für diesen Parameter ist ein Dokument.
-
maxTimeMS
: Der Typ dieses Parameters ist Zahl. Es gibt das Zeitlimit in Millisekunden an, innerhalb dessen die Operation abgeschlossen sein muss.Es wird ein Fehler zurückgegeben, wenn das Zeitlimit überschritten wird.
-
upsert
: Der Standardwert dieses Parameters istfalse
.Angenommen, der Wert dieser Option ist auf
true
gesetzt und kein Dokument entspricht der angegebenen Filterabfrage. In diesem Fall erstellt diese Methode ein neues Dokument.Es gibt einen
null
-Wert zurück (nach dem Einfügen eines neuen Dokuments), es sei denn, der Wert der OptionreturnNewDocument
ist auftrue.
gesetzt. Oder wenn der Wert für dieseupsert
-Option auftrue.
gesetzt ist, dann aktualisiert diese Methode das Dokument, das der angegebenen Filterabfrage entspricht. -
returnNewDocument
: Dieser Parametertyp ist ein boolescher Wert. Standardmäßig gibt diese Methode das Originaldokument zurück.Verwenden Sie den Parameter
returnNewDocument
und setzen Sie seinen Wert auftrue
, um das aktualisierte Dokument zurückzugeben. -
Collation
: Gibt die Verwendung der Collation für Operationen an. Es ermöglicht Benutzern, die sprachspezifischen Regeln für den Zeichenfolgenvergleich festzulegen, wie Regeln für Groß- und Kleinschreibung und Akzentzeichen.Der Typ für diesen Parameter ist ein Dokument.
-
arrayFilters
: Ein Array von Filterdokumenten gibt an, welche Array-Elemente für eine Aktualisierungsoperation auf einem Array-Feld geändert werden müssen. Der Typ für diesen Parameter ist ein Array.
Es wird das Originaldokument zurückgegeben, aber wenn Sie das aktualisierte Dokument zurückgeben möchten, müssen Sie den Wert des Parameters returnNewDocument
auf true
setzen.
In den folgenden Beispielen arbeiten Sie mit der folgenden Datenbank. Sie erstellen eine Sammlung namens Studenten
mit Dokumenten, die die Details der Studenten enthalten.
Die Datenbank ist unten angegeben:
db={
"students": [
{
id: 1,
name: "Ali",
language: "JavaScript",
score: 82
},
{
id: 2,
name: "Haris",
language: "Python",
score: 91
},
{
id: 3,
name: "Hamza",
language: "Python",
score: {
"Physics": 84,
"Math": 85
}
}
]
}
Verwenden Sie die Methode findOneAndUpdate()
, um das erste übereinstimmende Dokument zu aktualisieren
Für dieses Beispiel verwenden Sie die unten angegebene Abfrage:
db.students.findOneAndUpdate({name:"Ali"},{$inc:{score:4}})
Hier aktualisieren Sie das erste übereinstimmende Dokument gemäß den Auswahlkriterien (d. h. name: "Ali"
) durch ein neues Dokument (d. h. {$inc:{score:4}
}). Der Wert des Das Feld score
wird um vier erhöht und gibt das Originaldokument zurück.
Ausgang:
Nach dem Aktualisieren des Dokuments wird diese Ausgabe zurückgegeben.
Verwenden Sie die Methode findOneAndUpdate()
, um den Wert des eingebetteten Dokuments zu aktualisieren
Für dieses Beispiel verwenden Sie die unten angegebene Abfrage:
db.student.findOneAndUpdate({name:"Hamza"},{$inc:{"score.Math":5}})
Hier aktualisieren Sie den Wert des Felds Math
im eingebetteten Dokument. Der Wert des Feldes Math
wird um fünf erhöht.
Ausgang:
Verwenden Sie die Methode findOneAndUpdate()
, um das erste übereinstimmende Dokument zu aktualisieren und das aktualisierte Dokument zurückzugeben
Für dieses Beispiel verwenden Sie die unten angegebene Abfrage:
db.student.findOneAndUpdate({name:"Ali"},{$inc:{score:5}},{returnNewDocument:true})
Hier aktualisieren Sie das erste übereinstimmende Dokument gemäß den Auswahlkriterien (d. h. name: "Ali"
) durch ein neues Dokument (d. h. {$inc:{score:5}
}). Der Wert des Punktzahl
Feld wird um fünf erhöht.
Es gibt das neu aktualisierte Dokument zurück, weil wir den Wert von returnNewDocument
auf true
gesetzt haben.
Ausgang:
Abschluss
Mithilfe dieses MongoDB-Tutorial-Artikels haben Sie gelernt, wie Sie die Methode db.collection.findOneAndUpdate()
verwenden, mit der das erste übereinstimmende Dokument in der Sammlung aktualisiert wird, das den Auswahlkriterien entspricht. Sie können diese Methode auch verwenden, um eingebettete Dokumente zu ersetzen, und sie auch in Transaktionen mit mehreren Dokumenten verwenden.