[英]inserting max num of records in mongodb using nodejs in less time
我正在做一个小任务,需要读取节点中的一个大文件(即1.3GB),并将每一行分配到一条记录中,然后将每条记录用更少的时间插入到mongodb集合中。 请用代码建议我,并先谢谢。
您可能希望读取这样的数据量而不将其缓冲到内存中。
假设您正在处理JSON数据,我认为这可能是一种可行的方法:
var LineByLineReader = require('line-by-line');
var fileHandler = new LineByLineReader('path/to/file', { encoding:'utf8', skipEmptyLines: true });
var entries = [];
var bulkSize = 100000; // tweak as needed
fileHandler.on('error', function (err) {
// process errors here
});
fileHandler.on('line', function (line) {
entries.push(JSON.parse(line));
if (entries.length === bulkSize) {
// pause handler and write data
fileHandler.pause();
YourCollection.insertMany(entries)
.then(() => {
entries = [];
fileHandler.resume();
})
}
});
fileHandler.on('end', function () {
YourCollection.insertMany(entries)
.then(() => {
// everything's done, do your stuff here
});
});
line-by-line
模块似乎有点bug,将来可能会弃用 ,因此您可能想使用linebyline代替
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.