MongoDB proporciona diferentes tipos de operadores de actualización de campos para actualizar los valores de los campos de los documentos y el operador $rename es uno de ellos. Este operador se utiliza para actualizar los nombres de los campos con nuevos nombres. El nuevo nombre del campo debe ser diferente del nombre existente del campo.
- El operador $rename lógicamente primero realiza una operación $unset tanto en el nombre antiguo como en el nuevo y luego realiza una operación $set con el nuevo nombre.
- Si el documento contiene el campo con el nuevo nombre, este operador eliminará ese campo y cambiará el nombre del campo especificado al nuevo nombre.
- Este operador también puede trabajar con arrays o documentos incrustados/anidados. En documentos incrustados/anidados, este operador puede cambiar el nombre del campo especificado, así como mover los campos dentro y fuera de los documentos incrustados.
- Puede usar este operador en métodos como update(), findAndModify(), etc., según sus requisitos.
- Si el campo especificado para cambiar el nombre no está disponible, este operador no hará nada.
Sintaxis:
{$rename: {<field1>:<newName1>, <field2>:<newName2>, ... } }
Aquí, newName es el nuevo nombre y debe ser diferente del nombre existente del campo. Para especificar un campo en documentos incrustados/anidados con la ayuda de la notación de puntos.
En los siguientes ejemplos, estamos trabajando con:
Base de datos: GeeksforGeeks
Colección: Empleado
Documento: tres documentos que contienen los datos de los empleados en forma de pares campo-valor.
Cambiar el nombre de un campo en un solo documento:
En este ejemplo, estamos cambiando el nombre del campo experienciaAño a experiencia en el documento del empleado cuyo nombre es Amu.
Python3
db.Employee.update({"name.first": "Amu"}, {$rename: {"experienceYear":"experience"}})
Cambiar el nombre de un campo en varios documentos:
En este ejemplo, estamos cambiando el nombre del campo de departamento a unidad en todos los documentos presentes en la colección Empleado.
Python3
db.Employee.updateMany({}, {$rename: {"department":"unit"}})
Cambiar el nombre de un campo en un documento anidado/incrustado:
En este ejemplo, estamos cambiando el nombre del campo personalDetails.contactInfo a personalDetails.phoneNumber en un documento incrustado/anidado del empleado cuyo nombre es Sumit.
Python3
db.Employee.update({"name.first": "Sumit"}, {$rename: {"personalDetails.contactInfo":"personalDetails.phoneNumber"}})
Publicación traducida automáticamente
Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA