繁体   English   中英

在更少的时间内使用nodejs在mongodb中插入最大记录数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM