Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用Nodejs将大量条目插入Mongodb_Node.js_Mongodb_Express_Mongoose_Database - Fatal编程技术网

Node.js 使用Nodejs将大量条目插入Mongodb

Node.js 使用Nodejs将大量条目插入Mongodb,node.js,mongodb,express,mongoose,database,Node.js,Mongodb,Express,Mongoose,Database,所以我有一个包含“pins”的文件,我需要将其输入mongodb。它们包含在名为pins.txt的文件中,数据以新行分隔: A4DS24SD2 DF234SDF2 HFFGHFG45 JDRSDFG35 ... 我需要导入大约70000个PIN 每个pin还具有默认的used状态false 因此,为了导入如此大量的PIN,我已经使用nodejs/mongoose(我的应用程序内置于此)完成了这项工作 在测试几百个引脚时效果很好,但是当我尝试70000文件时,我的机器内存不足,给出错误: 致命错

所以我有一个包含“pins”的文件,我需要将其输入mongodb。它们包含在名为
pins.txt的文件中,数据以新行分隔:

A4DS24SD2
DF234SDF2
HFFGHFG45
JDRSDFG35
...
我需要导入大约70000个PIN

每个pin还具有默认的
used
状态
false

因此,为了导入如此大量的PIN,我已经使用nodejs/mongoose(我的应用程序内置于此)完成了这项工作

在测试几百个引脚时效果很好,但是当我尝试70000文件时,我的机器内存不足,给出错误:

致命错误:调用和重试分配失败-进程内存不足


那么,我的问题是,导入这么多数据的最佳方式是什么?我应该使用async.js一次完成这些任务吗

fs.readFile的问题是在启动回调之前加载了整个文件

你可以一行一行地做

像这样的东西应该可以用(注意……未经测试!)


哇,原来我的文件是700000行,不是70000行。不用说,这个模块工作得很好。在几分钟内导入所有内容。我已经为我的工作代码更新了你的代码示例。我想说70k行听起来不够长,无法填满你的内存!很高兴这有帮助。
  fs.readFile './data/pins-test.txt', 'utf8', (err,data)->
    if err
      console.log err
    codes = data.split('\n')
    codes.forEach (code)->
      pin = new Pin()
      pin.pinid = code
      pin.save()
reader = require "buffered-reader"
DataReader = reader.DataReader
  new DataReader("./data/pins1.txt", { encoding: "utf8" })
    .on "error", (error)->
        console.log ("error: " + error);
    .on "line", (line)->
        console.log(i,line)
        i++
        pin = new Pin()
        pin.pinid = line
        pin.save()
    .on "end", ()->
        console.log ("EOF")
    .read()