MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB - Zaktualizuj dokument

Użyj update() metoda lub save() metoda aktualizacji dokumentów w MongoDB.

W MongoDB zarówno update() metoda i save() metoda może być użyta do aktualizacji dokumentu.

update() metoda aktualizuje wartości w istniejącym dokumencie lub dokumentach, podczas gdy save() metoda zastępuje dokument dokumentem przekazanym jako parametr.

Jednak update() metoda może również zastąpić cały dokument, w zależności od przekazanego parametru.

update() Metoda

Oto przykład update() metoda.

Najpierw wybierzmy rekord do aktualizacji:

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

Wynik:

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

Jeff faktycznie robi dużo więcej niż tylko śpiewa. Dodajmy więc więcej instrumentów. Użyjemy $set operatora, aby zaktualizować jedno pole.

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

Wynik:

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

Teraz, jeśli wykonamy inne zapytanie, zobaczymy, że dokument został zaktualizowany zgodnie z opisem:

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

Wynik:

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

Więcej opcji:

  • Jeśli pole nie istnieje, $set operator doda nowe pole o określonej wartości, pod warunkiem, że nowe pole nie narusza ograniczenia typu.
  • Możesz również użyć { upsert: true } aby utworzyć nowy dokument, gdy żaden dokument nie pasuje do zapytania.
  • Możesz użyć { multi: true } aby zaktualizować wiele dokumentów, które spełniają kryteria zapytania. Domyślnie ta opcja jest ustawiona na false , więc tylko jeden dokument jest aktualizowany, jeśli nie ustawisz go na true .

save() Metoda

save() metoda jest skrzyżowaniem update() i insert() . Kiedy używasz save() metody, jeśli dokument istnieje, zostanie zaktualizowany. Jeśli nie istnieje, zostanie utworzony.

Jeśli nie określisz _id MongoDB utworzy dokument z _id który zawiera ObjectId wartość (zgodnie z insert() ).

Jeśli określisz _id pole, wykonuje aktualizację za pomocą { upsert: true } , co oznacza, że ​​tworzy nowy dokument, jeśli żaden dokument nie pasuje do zapytania.

Obecnie nie mamy żadnych dokumentów u naszych producentów kolekcja. Stwórzmy go za pomocą save() metoda:

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

Wynik:

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

Teraz, jeśli przeszukamy producentów kolekcji, widzimy nasz nowo utworzony rekord:

db.producers.find()

Wynik:

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

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak wybrać poddokumenty za pomocą MongoDB

  2. Jaki jest najbardziej dojrzały sterownik MongoDB dla C#?

  3. Co to jest błąd Mongoose Cast to ObjectId nie powiodło się dla wartości XXX w ścieżce _id?

  4. Zapytanie o zakres dla paginacji MongoDB

  5. Najlepsze oprogramowanie pośredniczące do przechowywania sesji dla Express + MongoDB