场景描述
node调用mongodump实现对mongo数据库的备份,并将备份结果压缩为zip,可以设置query条件限制备份的数据范围
解决方案
const cp = require('child_process')
const path = require('path')
const iconv = require('iconv-lite')
const { zip } = require('zip-a-folder')
const TEMP_PATH = 'temp'
const targetPath = path.join(path.resolve(__dirname), TEMP_PATH)
test()
async function test () {
const dbname = 'dbname'
const cmd = `mongodump -h 127.0.0.1 -d ${dbname} -o ${targetPath}`
console.log('导出')
cp.execSync(cmd, { encoding: 'buffer'}, (err, stdout, stderr) => {
if (err) {
console.log(err)
}
stdout = iconv.decode(stdout, 'gbk')
stderr = iconv.decode(stderr, 'gbk')
console.log(stdout)
console.log(stderr)
})
console.log('压缩')
await zip(targetPath, `./${dbname}.zip`)
console.log('压缩完成')
}
参考文档
https://docs.mongodb.com/manual/reference/program/mongodump/