在Node.js中将MongoDB集合数据导出为CSV文件

6

我在mongolab中创建了一个mongodb集合,并希望打印该集合中的所有文档。我有mongolab和mongolab的url,可以连接到该集合,如下:

mongodb://user:1234@xyz.mongolab.com:41248/new

示例文档结构如下:

{
    "_id": "9759572745-Sing",

   "details": {
    "Gender": "M",
    "PreTrainingStatus": "Fresher",
    "Religion": "Hindu",
    "attendanceInPercentage": "",
    "batchHolders": {
        "AssessmentDate": "Thu Jul 16 2015",
        "CourseFee": "7500",
        "isEditable": false
    },
    "batchID": "282726",
    "eid": "",
    "whereDidYouHearAboutStar": "---Select---",
    "skillInstructorOrTrainerName": "282726",
    "specificGovtInstitutetieups": "---Select---",
    "isSelected": false,
    "isEditable": false
},
"addedOnMs": 1439455766000,
"submittedOnMs": 1439454813000,
"latitude": "27.409566879272",
"longitude": "77.69295501709",
"locationName": "Uttar Pradesh 281006,null"
}

我想将它和所有嵌套属性一起打印出来,以列形式显示。 但我无法做到,请帮忙。
谢谢(预先感谢), Dia

3
请问您刚刚有没有把您的账号凭证发布到StackOverflow上?您需要尽快更改这些内容。 - Blakes Seven
2个回答

6

在Node.js中使用json2csv库将数据导出到CSV文件

示例

const json2csv = require('json2csv').parse;

//For unique file name
const dateTime = new Date().toISOString().slice(-24).replace(/\D/g, 
'').slice(0, 14); 

const filePath = path.join(__dirname, "../../../", "public", "exports", "csv-" + dateTime + ".csv");

let csv; 

const student = await req.db.collection('Student').find({}).toArray();

// Logging student
// [{id:1,name:"John",country:"USA"},{id:1,name:"Ronny",country:"Germany"}]

const fields = ['id','name','country'];

 try {
        csv = json2csv(booking_info, {fields});
    } catch (err) {
        return res.status(500).json({err});
    }

 fs.writeFile(filePath, csv, function (err) {
        if (err) {
            return res.json(err).status(500);
        }
        else {
            setTimeout(function () {
                fs.unlink(filePath, function (err) { // delete this file after 30 seconds
                if (err) {
                    console.error(err);
                }
                console.log('File has been Deleted');
            });

        }, 30000);
            res.download(filePath);
        }
    })

5
你可以使用 https://www.npmjs.com/package/json2csv
nested 选项的值设置为 true
同时,指定你从JSON中想要的字段。对于嵌套文档,你可以像这样指定 details.Gender

1
@narainsagar 是的。已经处理了1000000条记录。 - Hiren S.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接