Я создаю параллельную коллекцию (та же схема - другое имя) из внешнего источника данных. После того, как сбор будет готов, я хочу переключить 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!`)
У меня есть набор реплик монго (первичный, вторичный, арбитр).
Эта архитектура уже гарантирует, что у меня нет простоев?
Лучший способ приблизиться?
Спасибо!