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

Jak $set Update Operator funguje v MongoDB

MongoDB $set Operátor aktualizace nahradí hodnotu pole zadanou hodnotou.

Používá se ve spojení s operacemi aktualizace, například při použití update() způsob aktualizace dokumentu.

Příklad

Předpokládejme, že máme sbírku nazvanou dogs s následujícím dokumentem:

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

A předpokládejme, že chceme změnit váhu psa. Můžeme spustit následující update() příkaz pro aktualizaci hmotnosti:

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

Výsledkem bude následující výstup:

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

Což nám říká, že jeden dokument byl spárován a upraven.

Podívejme se na sbírku:

db.dogs.find()

Výsledek:

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

Vidíme, že váha byla aktualizována na zadanou hodnotu.

Je také možné zvýšit hodnoty o zadanou částku, ale k tomu bychom museli použít $inc operátor namísto $set .

Ale tento článek je celý o $set operátora, takže pokračujme.

Když pole neexistuje

Pokud pole, které se pokoušíte aktualizovat, neexistuje, bude pole přidáno do dokumentu se zadanou hodnotou.

Příklad:

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

Výstup:

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

Vidíme, že jeden dokument byl spárován a upraven.

Podívejme se znovu na sbírku.

db.dogs.find()

Výsledek:

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

Nyní tedy dokument obsahuje height pole se zadanou hodnotou.

Vložené dokumenty

Hodnoty ve vložených dokumentech můžete aktualizovat pomocí tečkové notace. Pokud zadaná cesta ještě neexistuje, je vytvořena.

Příklad:

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

Výstup:

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

Použijme findOne() pro vrácení dokumentu:

db.dogs.findOne()

Výsledek:

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

Vidíme, že vložený dokument byl přidán podle specifikace.

Pole

Data v polích můžete aktualizovat pomocí tečkové notace při zadávání indexu prvku, který chcete aktualizovat.

Předpokládejme, že máme následující dokument:

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

Pojďme aktualizovat dva prvky pole a jméno psa.

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

Výsledek:

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

Vidíme, že jeden dokument byl spárován a upraven.

A teď se podívejte na dokument.

db.dogs.findOne()

Výsledek:

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


  1. Azure Table vs MongoDB v Azure

  2. Zaručuje Stackexchange.Redis vypalování a zapomínání doručení?

  3. Lombok - java.lang.StackOverflowError:null na metodě toString

  4. 3 způsoby, jak převést datum na řetězec v MongoDB