sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB - Aktualizace dokumentu

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, $set operá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 na false , takže pokud jej nenastavíte na true, 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" }

  1. Jak funguje unhideIndex() v MongoDB

  2. Porovnání dat v mongodb

  3. MongoDB $mul

  4. Jak používat Redis v programu C++?