MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Tidak dapat mengisi sebagian besar data ke mongodb menggunakan Node.js

Seperti yang dikatakan Robbie, aliran adalah cara untuk melakukannya. fs.createReadStream() harus digunakan sebagai ganti .readFileSync() . Saya akan mulai dengan membuat pembaca baris yang mengambil jalur dan string/regex apa pun yang ingin Anda pisahkan:

linereader.js

var fs = require("fs");
var util = require("util");
var EventEmitter = require("events").EventEmitter;

function LineReader(path, splitOn) {

    var readStream = fs.createReadStream(path);
    var self = this;
    var lineNum = 0;
    var buff = ""
    var chunk;

    readStream.on("readable", function() {

        while( (chunk = readStream.read(100)) !== null) {
            buff += chunk.toString();
            var lines = buff.split(splitOn);

            for (var i = 0; i < lines.length - 1; i++) {
                self.emit("line",lines[i]);
                lineNum += 1;
            }
            buff = lines[lines.length - 1];
        }
    });
    readStream.on("close", function() {
        self.emit("line", buff);
        self.emit("close")
    });
    readStream.on("error", function(err) {
        self.emit("error", err);
    })
}
util.inherits(LineReader, EventEmitter);
module.exports = LineReader;

Ini akan membaca file teks, dan memancarkan acara "baris" untuk setiap baris yang dibaca, jadi Anda tidak akan memiliki semuanya dalam memori sekaligus. Kemudian, dengan menggunakan paket async (atau loop async apa pun yang ingin Anda gunakan), ulangi file yang menyisipkan setiap dokumen:

app.js

var LineReader = require("./linereader.js");
var async = require("async");

var paths = ["./text1.txt", "./text2.txt", "./path1/text3.txt"];
var reader;

async.eachSeries(paths, function(path, callback) {

    reader = new LineReader(path, /\n/g);

    reader.on("line", function(line) {
        var doc = turnTextIntoObject(line);
        db.collection("mycollection").insert(doc);
    })
    reader.on("close", callback);
    reader.on("error", callback);
}, function(err) {
    // handle error and finish;
})


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara menggunakan acara menjauhkan logika mongodb dari penangan permintaan node.js

  2. Bagaimana cara membuat daftar semua database di shell mongo?

  3. Mendapatkan hari pertama dalam seminggu dari nomor minggu di mongodb

  4. Konektor Percikan MongoDB py4j.protocol.Py4JJavaError:Terjadi kesalahan saat memanggil o50.load

  5. Beberapa penggunaan operator `$` posisional untuk memperbarui array bersarang