0
我在MongoDB數據庫中有一些文檔。將Mongoose文檔寫入csv文件
我想導出將這些文檔打印爲csv文件。
一些文件具有嵌套對象,所以我想我必須先操縱它們。
因此,一個文件可能是
{
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文件?文本還可以包含特殊字符(例如ö,ä等)。我使用Express在Node.js的