最要用于导出大量数据
利用mongo提供的命令跟nodejs的child_process模块,百万数据导出也挺快。
代码实例是导出数据库中的user表中某批次号的会员,并直接保存到静态托管文件夹,并返回下载url给前端。
mongoexport 中-q参数可以用find的所有操作,详情可以参考child_process模块以及mongoexport
const cp = require('child_process');
exports.UserFile = async function(req,res) {
let batch = req.query.batch;
//配置导出条件以及文件名和路径
let cmd = "-h|127.0.0.1|--port|27017|-d|dataBase|-c|user|--type=csv|-f|name,phone|-q|"+`{'batch':'${batch}'}`+"|-o|"+`./uploads/exports/${batch}.csv`;
cmd = cmd.split("|");
//执行命令生成csv文件
let cat=cp.spawn('mongoexport',cmd);
console.log('生成文件成功 : ' + code);
cat.on('close', function(code) {
res.send({
Code:1,
Msg:batch,
Data:{
url:`/uploads/exports/${batch}.csv`
}
})
})
}