Estoy usando Mongo 3.4.0
El operador $ rename actualiza el nombre de un campo y tiene la siguiente forma:
{$rename: { <field1>: <newName1>, <field2>: <newName2>, ... } }
por ej.
db.getCollection('user').update( { _id: 1 }, { $rename: { 'fname': 'FirstName', 'lname': 'LastName' } } )
El nuevo nombre de campo debe diferir del nombre de campo existente. Para especificar un en un documento incrustado, use la notación de puntos.
Esta operación cambia el nombre del campo nmae para nombrar todos los documentos de la colección:
db.getCollection('user').updateMany( {}, { $rename: { "add": "Address" } } )
db.getCollection('user').update({}, {$rename:{"name.first":"name.FirstName"}}, false, true);
En el método anterior, falso, verdadero son: {upsert: falso, multi: verdadero}. Para actualizar todos sus registros, necesita el multi: verdadero.
Cambiar el nombre de un campo en un documento incrustado
db.getCollection('user').update( { _id: 1 }, { $rename: { "name.first": "name.fname" } } )
utilice el enlace: https://docs.mongodb.com/manual/reference/operator/update/rename/
false, true
en elupdate
método de la$rename
versión son:{ upsert:false, multi:true }
. Necesitamulti:true
actualizar todos sus registros.upsert:true
creará el nombre del campo si el nombre del campo no existe, por defecto esfalse
."table.field" : "table.field"
sintaxis. Funcionó cuando acabo de usar la"field" : "field"
sintaxis.name.last
no lo estable.field
. Si lees la pregunta, puedes ver que elname
campo contiene un objeto.db.foo.update({}, {$rename:{"name.0.additional":"name.0.last"}}, false, true)
?