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.