Como um banco de dados nosql pode conter grandes quantidades de dados, você não pode migrá-lo no sentido rdbms regular. Na verdade, você não pode fazer isso para rdbms assim que seus dados ultrapassarem algum limite de tamanho. É impraticável deixar seu site fora do ar por um dia para adicionar um campo a uma tabela existente, e assim com rdbms você acaba fazendo patches feios como adicionar novas tabelas apenas para o campo e fazer junções para chegar ao data.In nosql world você pode fazer várias coisas.
- Como outros sugeriram, você pode escrever seu código para que ele lide com diferentes 'versões' do esquema possível. isso geralmente é mais simples do que parece. Muitos tipos de alterações de esquema são triviais para codificar. por exemplo, se você quiser adicionar um novo campo ao esquema, basta adicioná-lo a todos os novos registros e ele ficará vazio em todos os registros antigos (você não receberá erros "campo não existe" ou qualquer coisa;). se você precisar de um valor 'padrão' para o campo nos registros antigos, isso será feito de maneira muito trivial no código.
- Outra opção e, na verdade, a única opção sensata daqui para frente com alterações de esquema não triviais, como renomeações de campos e alterações estruturais, é armazenar schema_version em CADA registro e ter código para migrar dados de qualquer versão para a próxima em LEIA . ou seja, se a versão atual do esquema for 10 e você ler um registro do banco de dados com a versão 7, sua camada de banco de dados deverá chamar migrate_8, migrate_9 e migrate_10. Dessa forma, os dados acessados serão migrados gradativamente para a nova versão. e se não for acessado, quem se importa com qual versão é;)