使用猫鼬将大量文档导出到文本文件
Export large number of documents into text file using mongoose
我正在使用来自不同源文件的 Mongoose 架构将大约 60,000 条记录导入 MongoDb。现在我想将 selected 记录导出到文本文件(也对字段应用验证 - 例如猫鼬模式 email1 和 email2 中有两个字段。我必须在 email1 和 email2 之间 select作为每个记录的导出文件中的字段(电子邮件))。我提到了插件 mongoose-to-csv。是否有任何其他插件或方法可用于导出到 txt 文件?
是的,我尝试使用 fs 模块。
我希望在 txt 文档中得到类似这样的结果。
"ID","First_Name","Last_Name","Email"
123,ABC, DEF, emailABC@example.com
456,GHI, JKL, emailGDI@exaple.com
.....
我的代码是
Model.find({"ID":{$exist:true}},function(error,result)
{
var csv = json2csv({data:results, fields:fields, hasCSVColumnTitle:true});
fs.writeFile('TestFile.csv',csv,function(err)
{
});
});
我们可以将这些逗号分隔值写入文本文件吗?
我实际上并没有测试代码,但它应该可以正常工作(可能有一些小改动)并且应该可以帮助您理解这个想法。此实现使用将自动处理和写入数据的流。比将所有内容都放在内存中更具可扩展性。从 2.4.0。版本,猫鼬支持流。 event-stream 是处理流数据的优秀库。
var es = require('event-stream');
var fs = require('fs');
var wstream = fs.createWriteStream('TestFile.csv');
Model.find({"ID":{$exist:true}).stream()
.pipe(es.map(function (data, cb) {
var formated = data;
formated.email = data.email1 || data.email2;
var csv = json2csv({data:formated, fields:fields, hasCSVColumnTitle:true});
cb(null, csv)
}))
.pipe(wstream);
我正在使用来自不同源文件的 Mongoose 架构将大约 60,000 条记录导入 MongoDb。现在我想将 selected 记录导出到文本文件(也对字段应用验证 - 例如猫鼬模式 email1 和 email2 中有两个字段。我必须在 email1 和 email2 之间 select作为每个记录的导出文件中的字段(电子邮件))。我提到了插件 mongoose-to-csv。是否有任何其他插件或方法可用于导出到 txt 文件?
是的,我尝试使用 fs 模块。
我希望在 txt 文档中得到类似这样的结果。
"ID","First_Name","Last_Name","Email"
123,ABC, DEF, emailABC@example.com
456,GHI, JKL, emailGDI@exaple.com
.....
我的代码是
Model.find({"ID":{$exist:true}},function(error,result)
{
var csv = json2csv({data:results, fields:fields, hasCSVColumnTitle:true});
fs.writeFile('TestFile.csv',csv,function(err)
{
});
});
我们可以将这些逗号分隔值写入文本文件吗?
我实际上并没有测试代码,但它应该可以正常工作(可能有一些小改动)并且应该可以帮助您理解这个想法。此实现使用将自动处理和写入数据的流。比将所有内容都放在内存中更具可扩展性。从 2.4.0。版本,猫鼬支持流。 event-stream 是处理流数据的优秀库。
var es = require('event-stream');
var fs = require('fs');
var wstream = fs.createWriteStream('TestFile.csv');
Model.find({"ID":{$exist:true}).stream()
.pipe(es.map(function (data, cb) {
var formated = data;
formated.email = data.email1 || data.email2;
var csv = json2csv({data:formated, fields:fields, hasCSVColumnTitle:true});
cb(null, csv)
}))
.pipe(wstream);