mongodb - mongoosejs - mongoose objectid
Lidiar con los cambios de esquema en Mongoose (3)
¿Cuál es la mejor práctica (o herramienta) para actualizar / migrar esquemas Mongoose a medida que la aplicación evoluciona?
Acabo de tener este problema donde necesitaba actualizar mi base de datos para reflejar los cambios en mi esquema. Después de algunas investigaciones, decidí probar la función updateMany () en la consola mongo para hacer las actualizaciones y creo que funcionó bastante bien.
Para aplicar esto al ejemplo de vimdude, el código se verá de la siguiente manera:
try { db.<collection>.updateMany( { birthplace: null }, { $set: {"birthplace": "neverborn" } } ); } catch(e) { print(e); }
La función updateMany () actualizará todos los documentos en una colección basada en un filtro. En este caso, el filtro está buscando todos los documentos donde el campo ''lugar de nacimiento'' es nulo. Luego establece un nuevo campo en los documentos llamados ''birthplace'' y establece su valor en ''neverborn''.
Después de ejecutar el código, modificado para reflejar sus circunstancias, ejecute:
db.<collection>.find().pretty()
para verificar que se realizaron los cambios. El nuevo campo "lugar de nacimiento" con el valor "neverborn" debe aparecer al final de cada documento en su colección.
Espero que ayude.
Aunque 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'' }
});
Actualización: Probado, esto no funciona en su forma actual, tiene la idea correcta, obtuve una única migración para trabajar con ajustes considerables del módulo en sí. Pero no veo que funcione como está previsto sin algunos cambios importantes y de alguna manera no pierda de vista los diferentes esquemas.
Parece que quieres migraciones de datos de mangostas
Está pensado para migrar versiones antiguas de sus documentos a medida que los utiliza, lo que parece ser la mejor forma de manejar migraciones en mongodb.
En realidad, no desea ejecutar migraciones de conjunto de datos completos en una colección de documentos (tabla alter-alter) ya que carga mucho sus servidores y podría requerir tiempo de inactividad de la aplicación / servidor. A veces puede necesitar escribir un script que simplemente tome todos los documentos aplicando el nuevo esquema / alteraciones y llamadas guardadas, pero necesita comprender cuándo / dónde hacer eso. Un ejemplo podría ser, agregar lógica de migración a doc init tiene más de un golpe de rendimiento que vale la pena tomar el servidor por 3 horas para ejecutar las secuencias de comandos de migración.
También encontré este link bastante útil, básicamente reitera lo anterior con más detalle y esencialmente implementa el concepto del paquete de nodos anterior en php.
NB El módulo tiene 5 meses de antigüedad, 0 tenedores, pero miro a mi alrededor y no puedo encontrar nada mejor / más útil que el estilo de respuesta de abdelsaid.