2014-12-08 2 views
1

Мне нужно перенести около 19 тыс. Учетных записей из одной базы данных в другую и изменить их форматирование и т. Д. Удивительно, если кто-то имеет надежный метод для этого, возможно, с простым узлом. js script. Я искал пример в Интернете, но ничего не смог найти.Перенос данных из одной базы данных mongodb в другую с помощью mongoose

+0

Стоит ли [это] (https://github.com/kennethklee/mongoose-rolling-migration) закрыть? – chridam

+0

Это кажется немного сложнее, чем мне нужно. – codephobia

ответ

1

Я бы просто передал это с чем-то простым, как monk.js. Вот пример программы (без оболочки здесь, так что не может быть 100% точным):

var monk = require('monk'); 
var src = monk('localhost/my-database'); 
var dest = monk('remote-host/remote-database'); 

var users = src.get('users'); 
var remoteUsers = dest.get('newUsers'); 

users.find({}, { stream: true }) 
.each(function(user){ 

    // change some data 
    user.profileImage = user.image; 
    delete user.legacyPropery; 
    user.name = user.firstName + ' ' + user.lastName; 
    return user; 
}) 
.error(function(err){}) 
.success(function(){}); 

Это суть его. Даже если у вас есть несколько связанных коллекций, которые вы хотите перенести (например, комменты или прочее), потоковая передача и перемещение по одному звучат как лучший вариант. Вы можете запускать это параллельно (несколько процессов или использовать этот модуль в кластерном модуле несколько раз), вы можете рассчитывать на успех/ошибки и т. Д.

Почти так же, как если бы вы были mongodump, а затем mongorestore в новой базе данных, затем запустите там сценарий конвертера. (с обновлением $ или чем-то.).

+0

Это будет пара дней, прежде чем я смогу уйти. Я правильно помету этот ответ, если это сработает для меня. – codephobia

+0

Хотя ваш ответ привел меня в правильном направлении, я не думаю, что он был достаточно близко к тому, что я сделал, чтобы на самом деле отметить это как правильное. В итоге я просто сделал серию $ unsets, $ sets и т. Д., Чтобы изменить данные так, как мне это нужно, а затем использовал Robomongo для копирования данных в новую базу данных. Отлично. – codephobia

+0

Несомненно, никаких проблем. Во всяком случае, не набирал его для очков, и я рад, если это немного помогло. Хотя, если бы я ловил очки, я бы сказал, что ответ о том, как я мог это сделать, учитывая уровень детализации в вопросе;) – Zlatko

Смежные вопросы