2017-03-09 10 views
0

MongoDBデータベースにいくつかの文書があります。Mongoose文書をCSVファイルに書き込む

これらの文書をcsvファイルとして出力したいと思います。

ドキュメントの中にはネストされたオブジェクトがあるので、最初にそれらを操作する必要があると思います。

だから、文書が、私は最善の解決策は、2つの行としてこのオブジェクトを印刷することだろうと思い

{ 
    name: { 
    english: "English Name", 
    spanish: "Spanish name" 
    }, 
    subdocuments: [ 
    { 
     quantity: 100, 
     price: 20 
    }, 
    { 
     quantity: 200, 
     price: 30 
    }, 
    ] 
} 

次のようになります。

English Name, Spanish Name, Quantity, Price 
=========================================== 
English Name, Spanish Name, 100, 20 
English Name, Spanish Name, 200, 30 

だから私はこれをどのように行うことができますか? write-to-csv Node.jsパッケージを使用するのが最善でしょうか?

私は

const rows = []; 
Collection.find({}).then(docs => { 
    docs.forEach(doc => { 
    doc.subdocuments.forEach(subdocument => { 
     rows.push({ 'English Name': doc.name.english, 'Spanish Name': doc.name.spanish, quantity: subdocument.quantity, price: subdocument.price }); 
    }); 
    }); 
}); 

でドキュメントを取得する必要があると思う。しかし、ドキュメントがサブ文書が含まれている場合は、このアプローチでは、私だけの行を取得しますので、subdocuments配列がある場合、私はまた、単一の行に興味を持っています空 - 数量と価格の列が空白の場合。私は、オブジェクトのこの配列を持っている場合

は、私は非常にシンプルであるかもしれないcsvファイルにそれを書きたいので、私はそれだけで

var csv = ''; 

// headers 
csv += 'English Name, Spanish Name, Quantity, Price\n'; 

rows.forEach(row => { 
    csv += row['Spanish Name'] + ', ' + row['English Name'] + ', ' + row.quantity + ', ' + row.price + '\n'; 
}); 

ような何かをするのがベストだと思う。しかし、これは実際にあります正しいアプローチ?ユーザーがcsvファイルとしてダウンロードすることを確認するにはどうすればよいですか?テキストには特殊文字(ö、äなど)を含めることもできます。私はNode.jsの中であなたがあなたのコードを変更することで解決することができ、空のサブ文書で

答えて

0

問題Expressを使用しています。たとえば使用してCSVするために、後でそれを変換することができます

const rows = []; 
Collection.find({}).then(docs => { 
    docs.forEach(doc => { 
    if(doc.subdocuments.length === 0) 
     rows.push({ 'English Name': doc.name.english, 'Spanish Name': doc.name.spanish, quantity: 0, price: 0 }); 
    doc.subdocuments.forEach(subdocument => { 
     rows.push({ 'English Name': doc.name.english, 'Spanish Name': doc.name.spanish, quantity: subdocument.quantity, price: subdocument.price }); 
    }); 
    }); 
}); 

json2csv

関連する問題