Použijte update() metoda nebo save() způsob aktualizace dokumentů v MongoDB.
V MongoDB obě update() metoda a save() metodu lze použít k aktualizaci dokumentu.
update() metoda aktualizuje hodnoty v existujícím dokumentu nebo dokumentech, zatímco save() metoda nahradí dokument dokumentem předaným jako parametr.
Nicméně update() metoda může také nahradit celý dokument, v závislosti na parametru, který je předán.
Položka update() Metoda
Zde je příklad update() metoda.
Nejprve vyberte záznam, který chcete aktualizovat:
db.musicians.find({ _id: 6 }).pretty() Výsledek:
{
"_id" : 6,
"name" : "Jeff Martin",
"instrument" : "Vocals",
"born" : 1969
}
Jeff ve skutečnosti dělá mnohem víc než jen zpívá. Přidejme tedy další nástroje. Použijeme $set operátor pro aktualizaci jednoho pole.
db.musicians.update(
{ _id: 6 },
{ $set:{ instrument : [ "Vocals", "Guitar", "Sitar" ] } }
) Výsledek:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Nyní, když uděláme další dotaz, uvidíme, že dokument byl aktualizován podle specifikace:
db.musicians.find({ _id: 6 }).pretty() Výsledek:
{
"_id" : 6,
"name" : "Jeff Martin",
"instrument" : [
"Vocals",
"Guitar",
"Sitar"
],
"born" : 1969
}
Některé další možnosti:
- Pokud pole neexistuje,
$setoperátor přidá nové pole se zadanou hodnotou za předpokladu, že nové pole neporušuje omezení typu. - Můžete také použít
{ upsert: true }k vytvoření nového dokumentu, když dotazu neodpovídá žádný dokument. - Můžete použít
{ multi: true }aktualizovat více dokumentů, které splňují kritéria dotazu. Ve výchozím nastavení je tato možnost nastavena nafalse, takže pokud jej nenastavíte natrue, aktualizuje se pouze jeden dokument .
save() Metoda
save() metoda je kříženec mezi update() a insert() . Když použijete save() Pokud dokument existuje, bude aktualizován. Pokud neexistuje, bude vytvořen.
Pokud nezadáte _id pole MongoDB vytvoří dokument s _id který obsahuje ObjectId hodnotu (jako insert() ).
Pokud zadáte _id pole, provede aktualizaci pomocí { upsert: true } , což znamená, že pokud dotazu neodpovídá žádný dokument, vytvoří nový dokument.
V současné době nemáme žádné dokumenty v našich
producentech
sbírka. Vytvořme jej pomocí save() metoda:
db.producers.save({ _id: 1, name: "Bob Rock" }) Výsledek:
WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : 1 })
Nyní, když hledáme producenty kolekce, vidíme náš nově vytvořený záznam:
db.producers.find()
Výsledek:
{ "_id" : 1, "name" : "Bob Rock" }