MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как работи операторът за актуализация $set в MongoDB

MongoDB $set Операторът за актуализиране заменя стойността на поле с посочената стойност.

Използва се във връзка с операции за актуализиране, например при използване на update() метод за актуализиране на документ.

Пример

Да предположим, че имаме колекция, наречена dogs със следния документ:

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

И да предположим, че искаме да променим теглото на кучето. Можем да изпълним следния update() команда за актуализиране на теглото:

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

Това ще доведе до следния изход:

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

Което ни казва, че един документ е съпоставен и променен.

Нека проверим колекцията:

db.dogs.find()

Резултат:

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

Можем да видим, че теглото е актуализирано до посочената стойност.

Възможно е също да увеличим стойностите с определена сума, но за да направим това ще трябва да използваме $inc оператор вместо $set .

Но тази статия е за $set оператор, така че да продължим.

Когато полето не съществува

Ако полето, което се опитвате да актуализирате, не съществува, полето ще бъде добавено към документа с посочената стойност.

Пример:

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

Изход:

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

Можем да видим, че един документ е съпоставен и променен.

Нека проверим колекцията отново.

db.dogs.find()

Резултат:

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

Така че сега документът включва height поле с посочената стойност.

Вградени документи

Можете да актуализирате стойностите във вградените документи, като използвате нотация с точки. Ако посоченият път все още не съществува, той се създава.

Пример:

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

Изход:

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

Нека използваме findOne() за да върнете документа:

db.dogs.findOne()

Резултат:

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

Можем да видим, че вграденият документ е добавен, както е посочено.

Масиви

Можете да актуализирате данни в масиви, като използвате нотация с точки, докато указвате индекса на елемента, който искате да актуализирате.

Да предположим, че имаме следния документ:

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

Нека актуализираме два от елементите на масива и името на кучето.

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

Резултат:

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

Можем да видим, че един документ е съпоставен и променен.

А сега погледнете документа.

db.dogs.findOne()

Резултат:

{
	"_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. MongoError:филтър параметърът трябва да бъде обект

  2. Yeoman, Mongoose и MongoDB скеле

  3. MongoDB:Уникален ключ във вградения документ

  4. Как да инсталирам по-ранна версия на mongodb с homebrew?

  5. Инициализирайте данни за докеризирано монго