У меня есть 10 000 000 документов, которые я хочу вставить в MongoDB.
Я использую mongoose для создания документов проанализированного JSON (JSON создается путем преобразования содержимого множества текстовых файлов).
Я начал использовать Model.create
для каждого документа, но это было слишком медленно, и для завершения операции требовалось несколько дней. Поэтому я переключаюсь на Model.collection.insert
, чтобы ускорить процесс.
Это моя функция saveToDB
(написанная на TypeScript):
private saveToDB(hand: Hand): void {
this.bulkHands.push(new HandHistory(hand));
if(this.bulkHands.length >= 10000) {
HandHistory.collection.insert(this.bulkHands, (err): void => {
if(err) {
console.log('error', err);
}
this.bulkHands = [];
});
}
}
Я попробовал код, и мой парсер создает массив до 10 000 документов, а затем пытается вставить их в базу данных. Но Node всегда падает с Segmentation fault: 11
.
Даже когда я устанавливаю ограничение на 1 (вставка одного документа за раз), это происходит. Так что я предполагаю, что это как-то связано с функцией Model.collection.insert
. Но мои знания о базовой структуре недостаточно глубоки, чтобы понять, что здесь происходит.
Кто-нибудь сталкивался с такой проблемой? И что я могу сделать, чтобы решить это?