sql >> Database >  >> NoSQL >> MongoDB

Hoe een veld uit een MongoDB-document te verwijderen ($ uitgeschakeld)

In MongoDB kunt u de $unset . gebruiken field update operator om een ​​veld volledig uit een document te verwijderen.

De $unset operator is speciaal ontworpen om een ​​veld en zijn waarde uit het document te verwijderen.

Voorbeeld

Stel dat we een verzameling hebben met de naam dogs met de volgende documenten:

{ "_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 }

En stel dat we het type . willen verwijderen veld (en de respectieve waarde) van alle documenten.

We kunnen dit:

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

Uitgang:

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

Dit vertelt ons dat vier documenten overeenkwamen (omdat we een leeg querydocument als het eerste argument gebruikten) en vier werden bijgewerkt.

Laten we nu de collectie nog eens bekijken:

db.dogs.find()

Resultaat:

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

We kunnen zien dat het type veld is volledig verwijderd uit elk document.

Merk op dat de gespecificeerde waarde in de $unset uitdrukking (d.w.z. "") heeft geen invloed op de bewerking.

Verwijder meerdere velden

U kunt meerdere velden specificeren om te verwijderen door ze te scheiden met een komma.

Voorbeeld:

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

Uitgang:

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

Bekijk de collectie:

db.dogs.find()

Resultaat:

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

Nu alleen de _id velden zijn over.

Ingesloten documenten

U kunt puntnotatie gebruiken om velden uit ingesloten documenten te verwijderen.

Stel dat we een verzameling hebben met de naam pets met het volgende document:

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

En stel dat we de awards willen verwijderen veld uit het document.

We kunnen dit:

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

Uitgang:

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

Laten we nu het document controleren:

db.pets.findOne()

Resultaat:

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

De awards veld en zijn waarde (die zelf een ingesloten document was) is uit het document verwijderd.


  1. Hoe verander je alle array-elementen in een mongodb-document in een bepaalde waarde?

  2. Redis-set versus hash

  3. Hoe exporteer ik alle collecties in MongoDB?

  4. Wat is Redis pubsub en hoe gebruik ik het?