MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

Node.js का उपयोग करके डेटा के बड़े हिस्से को मोंगोडब में पॉप्युलेट नहीं कर सकता

जैसा कि रोबी ने कहा, धाराएं इसके साथ जाने का रास्ता हैं। fs.createReadStream() .readFileSync() के बजाय इस्तेमाल किया जाना चाहिए . मैं एक लाइन रीडर बनाने के साथ शुरू करूंगा जो पथ लेता है और जो भी स्ट्रिंग/रेगेक्स आप विभाजित करना चाहते हैं:

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;

यह एक टेक्स्ट फ़ाइल पढ़ेगा, और प्रत्येक पंक्ति पढ़ने के लिए "लाइन" ईवेंट उत्सर्जित करेगा, इसलिए आपके पास उन सभी को एक बार में स्मृति में नहीं रखा जाएगा। फिर, async पैकेज (या जो भी async लूप आप उपयोग करना चाहते हैं) का उपयोग करके, प्रत्येक दस्तावेज़ को सम्मिलित करने वाली फ़ाइलों के माध्यम से लूप करें:

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. MongoDB साझा क्लस्टर बनाने के लिए 3 सरल चरण

  2. नेवला जॉइनिंग डेटा

  3. एम्बेडेड सरणी के आधार पर दस्तावेज़ों को कैसे फ़िल्टर करें?

  4. Mongolab REST API कैसे प्रमाणित करता है

  5. MongoDB - एकत्रीकरण ढांचा (कुल गणना)