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,
$setoperator 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 nafalse, więc tylko jeden dokument jest aktualizowany, jeśli nie ustawisz go natrue.
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" }