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

Jak działa operator aktualizacji $set w MongoDB

MongoDB $set operator aktualizacji zastępuje wartość pola określoną wartością.

Jest używany w połączeniu z operacjami aktualizacji, na przykład podczas korzystania z update() metoda aktualizacji dokumentu.

Przykład

Załóżmy, że mamy kolekcję o nazwie dogs z następującym dokumentem:

{ "_id" : 1, "name" : "Wag", "weight" : 20 }

I załóżmy, że chcemy zmienić wagę psa. Możemy uruchomić następującą update() polecenie aktualizacji wagi:

db.dogs.update(
  { _id: 1 },
  {
     $set: { weight: 30 }
  }
)

Spowoduje to następujący wynik:

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

Co mówi nam, że jeden dokument został dopasowany i zmodyfikowany.

Sprawdźmy kolekcję:

db.dogs.find()

Wynik:

{ "_id" : 1, "name" : "Wag", "weight" : 30 }

Widzimy, że waga została zaktualizowana do określonej wartości.

Możliwe jest również zwiększenie wartości o określoną kwotę, ale w tym celu musielibyśmy użyć $inc operator zamiast $set .

Ale ten artykuł dotyczy $set operatora, więc kontynuujmy.

Kiedy pole nie istnieje

Jeśli pole, które próbujesz zaktualizować, nie istnieje, zostanie ono dodane do dokumentu z określoną wartością.

Przykład:

db.dogs.update(
  { _id: 1 },
  {
     $set: { height: 40 }
  }
)

Wyjście:

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

Widzimy, że jeden dokument został dopasowany i zmodyfikowany.

Sprawdźmy ponownie kolekcję.

db.dogs.find()

Wynik:

{ "_id" : 1, "name" : "Wag", "weight" : 30, "height" : 40 }

Więc teraz dokument zawiera height pole o określonej wartości.

Osadzone dokumenty

Możesz aktualizować wartości w osadzonych dokumentach za pomocą notacji kropkowej. Jeśli określona ścieżka jeszcze nie istnieje, zostanie utworzona.

Przykład:

db.dogs.update(
  { _id: 1 },
  {
     $set: { 
       "meals.breakfast": "Fish", 
       "meals.lunch": "Chicken", 
       "meals.dinner": "Beef" 
       }
  }
)

Wyjście:

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

Użyjmy findOne() aby zwrócić dokument:

db.dogs.findOne()

Wynik:

{
	"_id" : 1,
	"name" : "Wag",
	"weight" : 30,
	"height" : 40,
	"meals" : {
		"breakfast" : "Fish",
		"dinner" : "Beef",
		"lunch" : "Chicken"
	}
}

Widzimy, że osadzony dokument został dodany zgodnie z opisem.

Tablice

Możesz aktualizować dane w tablicach, używając notacji kropkowej podczas określania indeksu elementu, który chcesz zaktualizować.

Załóżmy, że mamy następujący dokument:

{
	"_id" : 1,
	"name" : "Wag",
	"awards" : [
		"Top Dog",
		"Best Dog",
		"Biggest Dog"
	]
}

Zaktualizujmy dwa elementy tablicy i imię psa.

db.dogs.update({ 
    _id: 1 
    }, { 
        $set: { 
            "name": "Bark",
            "awards.0": "Bottom Dog", 
            "awards.1": "Worst Dog"
        } 
})

Wynik:

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

Widzimy, że jeden dokument został dopasowany i zmodyfikowany.

A teraz spójrz na dokument.

db.dogs.findOne()

Wynik:

{
	"_id" : 1,
	"name" : "Bark",
	"awards" : [
		"Bottom Dog",
		"Worst Dog",
		"Biggest Dog"
	]
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wiele operacji grupowych przy użyciu platformy agregacji Mongo

  2. MongoDB — Rozwiń tablicę za pomocą agregacji i usuń duplikaty

  3. MongoDB $isNumber

  4. Przewodnik po Upsert w MongoDB

  5. MongoDB z Mongoid w Rails — indeksowanie geoprzestrzenne