2017-02-15 8 views
0

MongoDbにMongoDbにインポートされるレコードは、さまざまなソースファイルのMongooseスキーマを使用して約60,000です。今では、選択されたレコードのテキストファイルへのエクスポートを実行したいと考えています(たとえば、フィールドの検証を適用します。たとえば、mongooseスキーマのemail1とemail2に2つのフィールドがあります。各レコードのファイル)。私はプラグインmongoose-to-csvを参照しました。他のプラグインやtxtファイルへのエクスポートに利用できるメソッドはありますか?mongooseを使用して多数の文書をテキストファイルにエクスポート

はい、私は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より。バージョン、mongooseはストリームをサポートします。イベントストリームは、ストリームのデータを操作するための優れたライブラリです。

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

関連する問題