Node.js Массовая запись MongoDB не вставляет все записи - PullRequest
0 голосов
/ 26 апреля 2020

Я написал node.js скрипт для переноса данных mongoDB (около 1 миллиона записей). Коллекция, в которую я вставляю, уже насчитывает 4 миллиона записей. Моя цель - взять данные из коллекции A и коллекции B, обработать их и затем сбросить в коллекцию C. Коллекция C уже имеет несколько дублированных записей (около 300 тыс. Дубликатов, уникально проиндексированных в поле).

Я использовал insertMany с {order: false} с размером пакета 3000. 700 тыс. Записей должны быть вставлены, но на самом деле только 200к были вставлены. Я уменьшил размер пакета до 1000, и все записи 700k были вставлены. Я увеличил размер пакета до 3000 и перенес записи в новую коллекцию с 0 исходными записями. Все 1 миллион записей были перенесены.

Также пробовал навалом. Но опять тот же результат.

Пн go версия драйвера: "mongodb": "^3.1.12"

Пн go версия сервера: v3.4.17

Фрагмент кода insertMany

function insertMany(db, collection, documents) {
    return new Promise((resolve, reject) => {
        db.collection(collection).insertMany(documents, { ordered: false }, (err, result) => {
            if(err && err.result && err.result) {
                if(err.result.result.writeErrors) {
                    write_errors = write_errors + err.result.result.writeErrors.length;
                } else {
                    actual_inserts = actual_inserts + result.result.nInserted;
                }
            } else {
                actual_inserts = actual_inserts + result.result.n;
            }
            return resolve(true);
        });
    });
}

Общее количество документов, переданных этой функции, всегда одинаково, независимо от изменения размера пакета. Но общее количество вставленных документов (извлеченных из результата insertMany) зависит от изменения размера пакета.

Почему драйвер Node.js mon go ведет себя странно в условиях, когда у нас есть дубликаты? У нас есть колпачок на пакетные вставки?

1 Ответ

0 голосов
/ 26 апреля 2020

вы уже рассмотрели, как определяется схема, может обнаружиться ограничение уникальности

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...