2017-02-15 74 views
0

我使用來自不同源文件的Mongoose模式將大約60,000條記錄導入到MongoDb中。現在我想執行導出到選定記錄的文本文件(也在字段上應用驗證 - 例如,貓鼬模式email1和email2中有兩個字段,我必須在導出時選擇email1和email2作爲字段(Email)文件爲每個記錄)。我將插件mongoose-to-csv引用。有沒有其他插件或方法可用於導出到txt文件?使用貓鼬將大量文檔導入到文本文件

是的,我嘗試使用FS模塊。

我想在txt文件中得到類似這樣的結果。

"ID","First_Name","Last_Name","Email" 
123,ABC, DEF, [email protected] 
456,GHI, JKL, [email protected] 
..... 

我的代碼是

Model.find({"ID":{$exist:true}},function(error,result) 
{  
var csv = json2csv({data:results, fields:fields, hasCSVColumnTitle:true}); 
fs.writeFile('TestFile.csv',csv,function(err) 
{ 
}); 
}); 

我們能不能寫這些逗號分隔值到一個文本文件?

+0

你可以使用使用fs模塊來編寫文件,並在代碼中進行驗證嗎? –

回答

0

我沒有真正測試代碼,但它應該工作正常(可能有小的變化),並應該幫助你明白。該實現使用將自動處理和寫入數據的流。比將所有內容都放在內存中更具可擴展性。從2.4.0開始。版本,貓鼬支持流。事件流是操作流數據的優秀庫。

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); 
+0

它的工作原理。謝謝。 – Suji