Wie kann ich ein Feld umbenennen, die für alle Dokumente in MongoDB?
Vorausgesetzt, ich habe eine Sammlung in MongoDB mit 5000 Datensätzen, die jeweils etwas ähnliches wie:
{
"occupation":"Doctor",
"name": {
"first":"Jimmy",
"additional":"Smith"
}
Gibt es eine einfache Möglichkeit, benennen Sie das Feld "zusätzlich" zu dem "letzten" in allen Dokumenten? Ich sah die $umbenennen Betreiber in der Dokumentation, aber ich bin mir nicht wirklich klar, wie Sie angeben, Unterfeld.
InformationsquelleAutor soulkphp | 2012-02-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie verwenden:
Oder aktualisieren Sie einfach die Dokumente enthalten, die die Eigenschaft:
Den
false, true
in der oben genannten Methode sind:{ upsert:false, multi:true }
. Sie müssen diemulti:true
zu aktualisieren alle Ihre Unterlagen.Oder verwenden Sie den früheren Weg:
In MongoDB 3.2 Sie können auch
Die Allgemeine syntax HIERFÜR ist
https://docs.mongodb.com/manual/reference/method/db.collection.updateMany/
Nur ein Wort für, wenn Sie schlagen Ihren Kopf gegen die Wand, denn nichts ist Massen-aktualisiert: die
false, true
imupdate
Methode der$rename
version:{ upsert:false, multi:true }
. Sie müssen diemulti:true
zu aktualisieren alle Ihre Unterlagen.und wenn ich erhalte es
upsert:true
erstellen Feldname ist das Feld name nicht existiert, wird standardmäßigfalse
.Aus irgendeinem Grund, dies nicht für mich arbeiten, wenn ich die
"table.field" : "table.field"
syntax. Es hat funktioniert, wenn ich einfach das"field" : "field"
syntax.ist nicht
table.field
. Wenn Sie Lesen, die Frage kann man sehen, dass diename
Feld enthält ein Objekt.InformationsquelleAutor Felix Yan
bitte versuchen
db.collectionName.update({}, { $rename : { 'name.additional' : 'name.last' } }, { multi: true } )
und dies Lesen 🙂
http://docs.mongodb.org/manual/reference/operator/rename/#_S_rename
upsert
undmulti
Optionen.Nach der neuen Dokumentation sollte es so Aussehen: db.collectionName.updateMany({}, { $rename: {"name.zusätzliche' : 'Namen.last' } } )
InformationsquelleAutor Alex
Wenn Sie jemals brauchen, um die gleiche Sache mit mongoid:
UPDATE
Es änderung in der syntax, in
monogoid 4.0.0
:Model.all.rename(old_field: :new_field)
Wie kann ich diese option für das Dokument eingebettet
InformationsquelleAutor metakungfu
Jeder konnte potenziell verwenden Sie diesen Befehl, um ein Feld umzubenennen, aus der Kollektion (nicht mit jedem _id):
sehen FYI
InformationsquelleAutor Mants
Diese nodejs-code nur tun, dass , wie @Felix Yan erwähnt ehemaligen Weg scheint zu funktionieren , ich hatte einige Probleme mit anderen snipets hoffe, das hilft.
Dies wird benennen Sie die Spalte "oldColumnName" "newColumnName" der Tabelle "Dokumente"
InformationsquelleAutor d1jhoni1b
Ich bin mit ,Mongo 3.4.0
$Rename-operator aktualisiert den Namen des Feldes und hat die folgende form:
e.g
Den neuen Feldnamen muss, unterscheiden sich von den vorhandenen Feldnamen. Festlegen eines in einem eingebetteten Dokument, verwenden Sie die Punkt-notation.
Dieser Vorgang benennt das Feld nmae der name, für alle Dokumente in der Sammlung:
In der oben genannten Methode false, true: { upsert:false, multi:true }.Aktualisieren Sie alle Ihre Unterlagen, Sie müssen die multi:true.
Benennen Sie ein Feld in ein Dokument Eingebettete
link : https://docs.mongodb.com/manual/reference/operator/update/rename/
InformationsquelleAutor Swadeshi
Wenn Sie MongoMapper, das funktioniert:
InformationsquelleAutor Jon Kern