In MongoDB kunt u een veld hernoemen wanneer u documenten in een verzameling bijwerkt.
Om een veld te hernoemen, bel je de $rename
operator met de huidige naam van het veld en de nieuwe naam. Dit hernoemt het veld in alle overeenkomende documenten die een veld met die naam hebben.
Voorbeeld
Stel dat we een verzameling hebben met de naam employees
met de volgende documenten:
{ "_id" : 1, "name" : "Sandy", "salary" : 55000 } { "_id" : 2, "name" : "Sarah", "salary" : 128000 } { "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 4, "name" : "Chris", "salary" : 45000 } { "_id" : 5, "name" : "Beck", "salary" : 82000 }
En stel dat we de name
. willen hernoemen veld naar employee
.
We zouden dit kunnen doen:
db.employees.updateMany(
{ },
{ $rename: { "name": "employee" } }
)
Uitgang:
{ "acknowledged" : true, "matchedCount" : 5, "modifiedCount" : 5 }
Als we nu de find()
. gebruiken methode om de documenten in de collectie terug te geven, zien we het volgende resultaat:
db.employees.find()
Resultaat:
{ "_id" : 1, "salary" : 55000, "employee" : "Sandy" } { "_id" : 2, "salary" : 128000, "employee" : "Sarah" } { "_id" : 3, "salary" : 25000, "employee" : "Fritz" } { "_id" : 4, "salary" : 45000, "employee" : "Chris" } { "_id" : 5, "salary" : 82000, "employee" : "Beck" }
Meerdere velden hernoemen
U kunt meerdere velden hernoemen door ze te scheiden met een komma.
Voorbeeld:
db.employees.updateMany(
{ },
{ $rename: { "employee": "e", "salary": "s" } }
)
Uitgang:
{ "acknowledged" : true, "matchedCount" : 5, "modifiedCount" : 5 }
En zo ziet de collectie er nu uit:
{ "_id" : 1, "e" : "Sandy", "s" : 55000 } { "_id" : 2, "e" : "Sarah", "s" : 128000 } { "_id" : 3, "e" : "Fritz", "s" : 25000 } { "_id" : 4, "e" : "Chris", "s" : 45000 } { "_id" : 5, "e" : "Beck", "s" : 82000 }
Ingesloten documenten
U kunt puntnotatie gebruiken om veldnamen in ingesloten documenten bij te werken.
Voorbeelddocument:
db.pets.findOne()
Resultaat:
{ "_id" : 1, "name" : "Wag", "details" : { "type" : "Dog", "weight" : 20, "awards" : { "Florida Dog Awards" : "Top Dog", "New York Marathon" : "Fastest Dog", "Sumo 2020" : "Biggest Dog" } } }
Laten we enkele velden in het ingesloten document bijwerken:
db.pets.updateMany(
{ },
{ $rename: {
"details.type": "details.t",
"details.weight": "details.w",
"details.awards": "details.a"
}
}
)
Als we nu het document controleren, zien we het volgende:
db.pets.findOne()
Resultaat:
{ "_id" : 1, "name" : "Wag", "details" : { "a" : { "Florida Dog Awards" : "Top Dog", "New York Marathon" : "Fastest Dog", "Sumo 2020" : "Biggest Dog" }, "t" : "Dog", "w" : 20 } }
We kunnen ook de veldnamen bijwerken van de documenten die zijn ingesloten in de ingesloten documenten:
db.pets.updateMany(
{ },
{ $rename: {
"details.a.Florida Dog Awards": "details.a.fda",
"details.a.New York Marathon": "details.a.nym",
"details.a.Sumo 2020": "details.a.s2020"
}
}
)
En laten we het document nog eens controleren:
db.pets.findOne()
Resultaat:
{ "_id" : 1, "name" : "Wag", "details" : { "a" : { "fda" : "Top Dog", "nym" : "Fastest Dog", "s2020" : "Biggest Dog" }, "t" : "Dog", "w" : 20 } }