最要用于導出大量數(shù)據(jù)
利用mongo提供的命令跟nodejs的child_process模塊,百萬數(shù)據(jù)導出也挺快。
代碼實例是導出數(shù)據(jù)庫中的user表中某批次號的會員,并直接保存到靜態(tài)托管文件夾,并返回下載url給前端。
mongoexport 中-q參數(shù)可以用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("|");
//執(zhí)行命令生成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`
}
})
})
}