Я пытаюсь переместить свою базу данных на другой сервер.
У меня есть коллекция с документами 410k ~, я хочу переместить их частично 100 на 100 на мой новый сервер с базой данных mongodb.
Вот мой код:
var mongoose = require('mongoose');
var itemdataModel = require('./model/ItemData');
mongoose.connection.on('error', function(err) {
console.log('MongoDB Connection Error.' + err);
process.exit(1);
});
mongoose.connection.on('close', function() {
console.log('Connection closed');
process.exit(1);
});
const ins = async (itemz) => {
try {
console.log("Inserting..")
await mongoose.connect('<url to new database>', { useNewUrlParser: true });
await gamedataModel.insertMany(itemz,
async (err, result) => {
if (err) {
console.log("Insert query error" + err)
await mongoose.connection.close()
} else {
console.log("Inserted!");
await mongoose.connection.close()
}
});
} catch (e) {
console.log('insert error ' + e)
}
}
(async () => {
mongoose.connect('<url to old database>', { useNewUrlParser: true });
const wyn = await itemdataModel.find({}).countDocuments()
console.log('Documents count: ' + wyn)
for (let i = 0; i < wyn; i += 100) {
const docs = await itemdataModel.find({status: 'processed'}, '', {'skip': i, 'limit': 100 }).lean().exec()
console.log('Selected ' + docs.length + ' documents to move')
await mongoose.connection.close()
await ins(docs)
}
})();
Проблема с подключением ко второй базе данных в функции "ins", вывод моей консоли:
Количество документов: 411975
Выбрано 100 документов для перемещения
Соединение закрыто
Как заставить его работать?Требуется закрыть первое соединение, прежде чем запускать другое, чтобы вставить 100 документов, затем закрыть его и вернуться в цикл, чтобы переместить еще 100 документов?
Я не хочу перегружать серверы, открывая соединения 411k / 100 водин раз на них обоих