Saltar al contenido

Tratar con cambios de esquema en Mongoose

Este dilema se puede abordar de diferentes maneras, por lo tanto te damos la que para nosotros es la solución más completa.

Solución:

Sin embargo, es divertido, MongoDB nació para responder a los problemas de esquema en RDBMS. No tiene que migrar nada, todo lo que tiene que hacer es establecer el valor predeterminado en la definición del esquema si el campo es obligatorio.

new Schema(
    name:  type: string 
)

a:

new Schema(
    name:  type: string ,
    birthplace:  type: string, required: true, default: 'neverborn' 
);

Acabo de tener este problema donde necesitaba actualizar mi base de datos para reflejar los cambios en mi esquema. Después de investigar un poco, decidí probar la función updateMany() en la consola de mongo para realizar las actualizaciones y creo que funcionó bastante bien.

Para aplicar esto al ejemplo de vimdude, el código se vería de la siguiente manera:

try  
    db..updateMany(  birthplace: null ,  $set: 
              "birthplace": "neverborn"   ); 
 catch(e)  
    print(e);

La función updateMany() actualizará todos los documentos de una colección en función de un filtro. En este caso el filtro está buscando todos los documentos donde está el campo ‘lugar de nacimiento’ null. Luego establece un nuevo campo en esos documentos llamado ‘lugar de nacimiento’ y establece su valor en ‘nunca nacido’.

Después de ejecutar el código, modificado para reflejar sus circunstancias, ejecute:

db..find().pretty()

para comprobar que se han realizado los cambios. El nuevo campo “lugar de nacimiento” con el valor de “nunca nacido” debe mostrarse al final de cada documento de su colección.

Espero que ayude.

Actualizar: Probado, esto no funciona en su forma actual, tiene la idea correcta, obtuve una sola migración para trabajar con ajustes considerables del módulo en sí. Pero no lo veo funcionando según lo previsto sin algunos cambios importantes y sin hacer un seguimiento de los diferentes esquemas de alguna manera.


Parece que quieres mongoose-data-migrations

Está destinado a migrar versiones de esquema antiguas de sus documentos a medida que los usa, lo que parece ser la mejor manera de manejar las migraciones en mongodb.

Realmente no desea ejecutar migraciones completas de conjuntos de datos en una colección de documentos (como una tabla alterada), ya que supone una gran carga para sus servidores y podría requerir tiempo de inactividad de la aplicación/servidor. A veces, es posible que deba escribir un script que simplemente tome todos los documentos, aplique el nuevo esquema/alteraciones y llame a guardar, pero debe comprender cuándo/dónde hacerlo. Un ejemplo podría ser, agregar la lógica de migración a doc init tiene más impacto en el rendimiento que desactivar el servidor durante 3 horas para ejecutar scripts de migración.

También encontré este enlace bastante útil, básicamente reitera lo anterior con más detalle y esencialmente implementa el concepto del paquete de nodo anterior en php.

nótese bien El módulo tiene 5 meses, 0 bifurcaciones, pero estoy buscando y no puedo encontrar nada mejor / más útil que el estilo de respuesta de abdelsaid.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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