Sie können verwenden:
db.foo.update({}, {$rename:{"name.additional":"name.last"}}, false, true);
Oder um einfach die Dokumente zu aktualisieren, die die Eigenschaft enthalten:
db.foo.update({"name.additional": {$exists: true}}, {$rename:{"name.additional":"name.last"}}, false, true);
Die false, true
in der obigen Methode sind : { upsert:false, multi:true }
. Sie benötigen das multi:true
, um alle Ihre Datensätze zu aktualisieren .
Oder Sie können den früheren Weg verwenden:
remap = function (x) {
if (x.additional){
db.foo.update({_id:x._id}, {$set:{"name.last":x.name.additional}, $unset:{"name.additional":1}});
}
}
db.foo.find().forEach(remap);
In MongoDB 3.2 können Sie auch verwenden
db.students.updateMany( {}, { $rename: { "oldname": "newname" } } )
Die allgemeine Syntax hierfür lautet
db.collection.updateMany(filter, update, options)
https://docs.mongodb.com/manual/reference/method/db.collection.updateMany/
false, true
in derupdate
Methode der$rename
Version sind :{ upsert:false, multi:true }
. Sie benötigen dasmulti:true
, um alle Ihre Datensätze zu aktualisieren.upsert:true
wird ein Feldname erstellt, wenn der Feldname nicht existiert, standardmäßigfalse
."table.field" : "table.field"
Syntax verwendete. Es hat funktioniert, als ich nur die"field" : "field"
Syntax verwendet habe.name.last
ist nichttable.field
. Wenn Sie die Frage lesen, können Sie sehen, dass dasname
Feld ein Objekt enthält.db.foo.update({}, {$rename:{"name.0.additional":"name.0.last"}}, false, true)
?bitte versuche
db.collectionName.update({}, { $rename : { 'name.additional' : 'name.last' } }, { multi: true } )
und lesen Sie dies :) http://docs.mongodb.org/manual/reference/operator/rename/#_S_rename
quelle
upsert
undmulti
Optionen aus.Wenn Sie jemals dasselbe mit Mongoid tun müssen:
AKTUALISIEREN
Die Syntax ändert sich in
monogoid 4.0.0
:quelle
Model.all.rename(old_field: :new_field)
Jeder kann diesen Befehl möglicherweise verwenden, um ein Feld aus der Sammlung umzubenennen (indem keine _id verwendet wird):
siehe FYI
quelle
Dieser NodeJS-Code macht einfach das, da @Felix Yan erwähnte, dass der frühere Weg gut zu funktionieren scheint. Ich hatte einige Probleme mit anderen Snipets und hoffe, dass dies hilft.
Dadurch wird die Spalte "oldColumnName" in "newColumnName" der Tabelle "documents" umbenannt.
quelle
Ich benutze Mongo 3.4.0
Der Operator $ rename aktualisiert den Namen eines Felds und hat die folgende Form:
für zB
Der neue Feldname muss vom vorhandenen Feldnamen abweichen. Verwenden Sie die Punktnotation, um ein in einem eingebetteten Dokument anzugeben.
Diese Operation benennt das Feld nmae in name für alle Dokumente in der Sammlung um:
In der obigen Methode sind false, true: {upsert: false, multi: true}. Um alle Ihre Datensätze zu aktualisieren, benötigen Sie multi: true.
Benennen Sie ein Feld in einem eingebetteten Dokument um
Verwenden Sie den Link: https://docs.mongodb.com/manual/reference/operator/update/rename/
quelle
Wenn Sie MongoMapper verwenden, funktioniert dies:
quelle