2011-09-26 19 views
8

Ho iniziato con mongoDB e mangusta. Mi stavo chiedendo come le persone gestiscono gli schemi in evoluzione. Per esempio, se ho iniziato con uno schema simile a questo:Modifica degli schemi in mongoDB/mangusta

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

e si è evoluto in qualcosa di simile:

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

Come potrei aggiornare o il gestore di vecchi dischi che sono stati stabiliti utilizzando il vecchio disegno dello schema ?

risposta

11

Un approccio alla migrazione degli schemi di documento che comporta trasformazioni di dati semplici sarebbe quello di utilizzare $exists per trovare i documenti che mancano i nuovi campi e migrarli.

Per esempio, trasformando nome e cognome in un nuovo campo user_name:

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); 
    } 
) 

Per le migrazioni più complesse alcuni strumenti che potrebbero essere utili sono:

Problemi correlati