sql >> Database >  >> NoSQL >> MongoDB

De naam van een veld in een MongoDB-verzameling wijzigen

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
	}
}

  1. Hoe SCAN te gebruiken met de MATCH-optie in Predis

  2. MongoDB Aggregation Framework-stadia en Pipelining

  3. MongoDB sort()

  4. Redis-databases op een ontwikkelmachine met meerdere projecten