MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Benennen Sie ein Feld in einer MongoDB-Sammlung um

In MongoDB können Sie ein Feld umbenennen, wenn Sie Dokumente in einer Sammlung aktualisieren.

Um ein Feld umzubenennen, rufen Sie $rename auf -Operator mit dem aktuellen Namen des Felds und dem neuen Namen. Dadurch wird das Feld in allen übereinstimmenden Dokumenten umbenannt, die ein Feld mit diesem Namen haben.

Beispiel

Angenommen, wir haben eine Sammlung namens employees mit folgenden Dokumenten:

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

Und angenommen, wir wollen den name umbenennen Feld an employee .

Wir könnten dies tun:

db.employees.updateMany( 
  { }, 
  { $rename: { "name": "employee" } } 
)

Ausgabe:

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

Wenn wir jetzt find() verwenden -Methode, um die Dokumente in der Sammlung zurückzugeben, sehen wir das folgende Ergebnis:

db.employees.find()

Ergebnis:

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

Mehrere Felder umbenennen

Sie können mehrere Felder umbenennen, indem Sie sie durch ein Komma trennen.

Beispiel:

db.employees.updateMany( 
  { }, 
  { $rename: { "employee": "e", "salary": "s" } } 
)

Ausgabe:

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

Und so sieht die Sammlung jetzt aus:

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

Eingebettete Dokumente

Sie können die Punktnotation verwenden, um Feldnamen in eingebetteten Dokumenten zu aktualisieren.

Beispieldokument:

db.pets.findOne()

Ergebnis:

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

Lassen Sie uns einige der Felder im eingebetteten Dokument aktualisieren:

db.pets.updateMany( 
  { }, 
  { $rename: { 
      "details.type": "details.t", 
      "details.weight": "details.w",
      "details.awards": "details.a"
    } 
  } 
)

Wenn wir nun das Dokument prüfen, sehen wir Folgendes:

db.pets.findOne()

Ergebnis:

{
	"_id" : 1,
	"name" : "Wag",
	"details" : {
		"a" : {
			"Florida Dog Awards" : "Top Dog",
			"New York Marathon" : "Fastest Dog",
			"Sumo 2020" : "Biggest Dog"
		},
		"t" : "Dog",
		"w" : 20
	}
}

Wir können auch die Feldnamen der Dokumente aktualisieren, die in den eingebetteten Dokumenten eingebettet sind:

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

Und lassen Sie uns das Dokument noch einmal überprüfen:

db.pets.findOne()

Ergebnis:

{
	"_id" : 1,
	"name" : "Wag",
	"details" : {
		"a" : {
			"fda" : "Top Dog",
			"nym" : "Fastest Dog",
			"s2020" : "Biggest Dog"
		},
		"t" : "Dog",
		"w" : 20
	}
}