переключаться между коллекциями MongoDB с нулевым временем простоя - PullRequest
0 голосов
/ 02 июня 2019

Я создаю параллельную коллекцию (та же схема - другое имя) из внешнего источника данных. После того, как сбор будет готов, я хочу переключить 2 без простоя. Предложения?

Я использую mongoose для создания параллельной коллекции, чтобы использовать «магию» mongoose (значения по умолчанию, проверка модели и т. Д.), Но порождаю команды терминала, такие как mongoexport, mongoimport для быстрого удаления и заполнения исходной коллекции. К сожалению, похоже, не удается избавиться от разрыва между удалением и импортом новых данных.

// switching between _publications and publications
results = spawnSync('mongoexport', [
                '--db', 'convoy',
                '--collection', '_publications',
                '--out', 'res/json/_publications.json',
                '--jsonArray'
            ], {
                shell: true
            })
            console.log(`mongoexport done`)
            if (!fs.existsSync(`./res/json/_publications.json`)) return cb(`export failed - export file doesn't exist`)
            if (fs.statSync(`./res/json/_publications.json`).size < 50) return cb(`export failed - export file smaller than 50 bytes`)
            console.log(`dropping publications`)
            await mongoose.connection.db.dropCollection('publications')
            console.log(`importing _publications to publications collection`)
            // mongoimport publications.json -d convoy -c publications --jsonArray
            results = spawnSync('mongoimport', [
                'res/json/_publications.json',
                '-d', 'convoy',
                '-c', 'publications',
                '--jsonArray'
            ], {
                shell: true
            })
            fs.unlinkSync(`./res/json/_publications.json`)
            await mongoose.connection.db.dropCollection('_publications')
            cb(null, `done!`)

У меня есть набор реплик монго (первичный, вторичный, арбитр). Эта архитектура уже гарантирует, что у меня нет простоев? Лучший способ приблизиться? Спасибо!

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