MongoDB – Operador de cambio de nombre ($renombrar)

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *