2011-09-26 12 views
8

Estoy comenzando con mongoDB y mangosta. Me preguntaba cómo la gente administra esquemas evolutivos. Por ejemplo, si Empecé con un esquema como éste:Cambiando esquemas en mongoDB/mangosta

user_ID : 123, 
user_firstName : 'bob', 
user_lastName : 'smith' 

y evolucionado a algo como esto:

user_ID: 123, 
user_name: [first:'bob', last:'smith'] 

¿Cómo podría actualizar o administrar los registros antiguos que se establecieron mediante el diseño del esquema de edad ?

Respuesta

11

Un enfoque para migrar esquemas de documentos que impliquen transformaciones de datos simples sería usar $exists para buscar documentos que faltan en los nuevos campos y migrarlos.

Por ejemplo, la transformación de nombre y apellido en un nuevo campo nombre_de_usuario:

db.mycollection.find({ user_name : { $exists : false } }).forEach(
    function (doc) { 
     doc.user_name = {'first': doc.user_firstName, 'last': doc.user_lastName}; 

     // Remove old properties 
     delete doc.user_firstName; 
     delete doc.user_lastName; 

     // Save the updated document 
     db.mycollection.save(doc); 
    } 
) 

Para las migraciones más complejas algunas herramientas que podrían ser útiles son: