MongoDB: Ein Feld in allen Dokumenten umbenennen

MongoDB ist eine hochperformante, schema-freie, dokumentenorientierte Datenbank. Im Gegensatz zu relationalen Datenbanken gibt es hier keine fixe Datenstruktur, sondern die einzelnen Collections (vergleichbar mit Tabellen bei relationalen Datenbanken) können im Prinzip beliebige Strukturen enthalten. Dieser Artikel beschreibt, wie ein Feld in solch einer losen Struktur umbenannt werden kann.

Im nachfolgenden Beispiel hießt die Collection „locations“. In dieser Collection sollen alle Felder mit dem Namen „address“ in „full_address“ umbenannt werden. Um diese Aktion durchzuführen, muss nachfolgender Befehl mit Hilfe der Mongo-Shell ausgeführt werden:

db.locations.update( { }, { $rename: {"address" : "full_address"} }, false, true);

Die beiden weiteren Parameter „false“ und „true“ geben dabei an, dass kein Upsert durchgeführt werden soll, dafür aber alle passenden Einträge geändert werden sollen (=Multi). Upsert bedeutet dabei, dass ein neues Dokument erzeugt würde, sofern kein passendes Dokument vorhanden ist. Da es aber ja darum geht, alle bestehenden Dokumente zu aktualisieren, müssen wir diesen Parameter auf „false“ setzen. Multi steht dafür, dass alle passenden Dokumente aktualisiert werden. Steht Multi auf „false“, dann würde nur der erste passende Treffer aktualisiert werden.

Schreibe einen Kommentar