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

Как да премахнете поле от документ на MongoDB ($unset)

В MongoDB можете да използвате $unset Оператор за актуализиране на полето, за да премахнете напълно поле от документ.

$unset Операторът е създаден специално за изтриване на поле и неговата стойност от документа.

Пример

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

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }

И да предположим, че искаме да премахнем type поле (и съответната стойност) от всички документи.

Можем да направим това:

db.dogs.updateMany(
   { },
   { $unset: { type: "" } }
)

Изход:

{ "acknowledged" : true, "matchedCount" : 4, "modifiedCount" : 4 }

Това ни казва, че четири документа съвпадат (тъй като използвахме празен документ за заявка като първи аргумент) и четири са актуализирани.

Сега нека проверим колекцията отново:

db.dogs.find()

Резултат:

{ "_id" : 1, "name" : "Wag", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "weight" : 10 }
{ "_id" : 6, "name" : "Fetch", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "weight" : 30 }

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

Имайте предвид, че посочената стойност в $unset изразът (т.е. „”) не оказва влияние върху операцията.

Премахване на множество полета

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

Пример:

db.dogs.updateMany(
   { },
   { $unset: { name: "", weight: "" } }
)

Изход:

{ "acknowledged" : true, "matchedCount" : 4, "modifiedCount" : 4 }

Проверете колекцията:

db.dogs.find()

Резултат:

{ "_id" : 1 }
{ "_id" : 2 }
{ "_id" : 6 }
{ "_id" : 7 }

Сега само _id полетата са оставени.

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

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

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

{
	"_id" : 1,
	"name" : "Wag",
	"details" : {
		"type" : "Dog",
		"weight" : 20,
		"awards" : {
			"Florida Dog Awards" : "Top Dog",
			"New York Marathon" : "Fastest Dog",
			"Sumo 2020" : "Biggest Dog"
		}
	}
}

И да предположим, че искаме да премахнем awards поле от документа.

Можем да направим това:

db.pets.updateMany(
   { _id: 1 },
   { $unset: { "details.awards": "" } }
)

Изход:

{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

Сега нека проверим документа:

db.pets.findOne()

Резултат:

{
	"_id" : 1,
	"name" : "Wag",
	"details" : {
		"type" : "Dog",
		"weight" : 20
	}
}

awards полето и неговата стойност (която сама по себе си е вграден документ) е премахната от документа.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Какъв е препоръчителният подход към бази данни с множество наематели в MongoDB?

  2. Кога да използвате CouchDB над MongoDB и обратно

  3. Данните за актуализиране на MongoDB във вложено поле

  4. Множество препратки към схеми в един масив от схеми - mongoose

  5. MongoDB $add