2013-03-15 13 views
8

Gibt es in node.js/javascript eine Bibliothek, die es einer Person ermöglicht, mongoimport im Code zu verwenden?Ausführen von mongoimport innerhalb von Code mit Javascript/Node.js

Nach meinem Verständnis ist mongoimport irgendwie wie eine .exe, die Sie zuerst ausführen müssen, bevor Sie in der Lage sind, seine Texteingabeumgebung zu verwenden.

Ist es möglich, mongoimport in meinem Code auszuführen und dann alle benötigten Befehle direkt in meinem Code zu parsen?

My aktuellen Algorithmus beinhaltet:

fs.appendFile('log.txt',JSON.stringify(obj, null, 2)); 

obj ein Objekt ist, das, was Funktionen in JSON.stringify mit der Methode der res node.js parsen angibt (die HTTP-Antworten anfordert)

var obj = {}; 
obj.url = hostNames[i]; 
obj.statusCode = res.statusCode; 
obj.headers = res.headers; 

dann Ich benutze Mongoimport, um dieses JSON-Dokument in meine MongoDB zu importieren.

mongoimport --host localhost -db scrapeapp -collection scrape --file log.txt --jsonArray

Diese Methode ist offensichtlich ineffizient. Ich würde gerne alle diese Schritte auf einmal machen.

Hilfe geschätzt

+0

Haben Sie den MongoDB node.js Treiber angeschaut? Dies ist das, was Sie verwenden möchten, wenn Sie direkt von einem node.js-Dienst zu MongoDB sprechen möchten. Dokumentation ist hier: http://docs.mongodb.org/ecosystem/drivers/node-js/ –

+0

Um zu erweitern, was James gesagt hat, denke ich, du hast ein falsches Verständnis darüber, wofür mongoimport verwendet wird. Die meisten Ihrer Interaktionen mit mongodb werden über einen Treiber erfolgen. Der Treiber ermöglicht das Einfügen, Aktualisieren und Löschen von Dokumenten (Objekten) in Ihrer Datenbank über eine bestimmte Sprache, in diesem Fall Javascript. Mongoimport sollte nicht für normale Einfügungen in Ihrer Datenbank verwendet werden. Es wird hauptsächlich zum Importieren von Daten verwendet, die aus anderen Quellen exportiert wurden, wie z. B. andere Datenbanken oder Anwendungen. – ACE

+0

Sie haben Recht. Ich habe derzeit ein Missverständnis mit der Verwendung von MongoDB. Ich kratze derzeit Kopfzeilen von ein paar (tausend) Websites, die ich dann Analyse in ein paar Monaten Zeit tun werde. Ich werde meinen Algorithmus ändern, um einen insert() Header nach Header zu machen, anstatt einen Import durchzuführen. Was denken Sie? db.scrape.insert (JSON.stringify (obj, null, 2)); – theGreenCabbage

Antwort

0

ich in keiner Weise bin ein Knoten Experte - aber wenn Sie JSON-Dateien vorhandene haben, könnten Sie mongoimport in Knoten als Shell-Befehl ausführen als here beschrieben oder in verschiedenen answers.

+0

Er sagte, er ist sich dessen bewusst. Er fragt, wie man das Äquivalent von "Mongoimport" in JavaScript anstelle der Mongo-Shell machen kann. – Benny

+0

Er fragte: "Ist es möglich, mongoimport in meinem Code auszuführen". Der erste Artikel, mit dem ich verlinkt habe, heißt "Execute A Unix Command With Node.js" - technisch gesehen würde das funktionieren. Aber ich bin mir bewusst, dass dies wahrscheinlich nicht im Sinne von Effizienz war. – thomers

0

Dies ist, wie ich es in meinem Code

let exec = require('child_process').exec 
let command = 'mongoimport -d database -c collection --file import.json' 
exec(command, (err, stdout, stderr) => { 
    // check for errors or if it was succesfuly 
    cb() 
}) 

ich den mongoimport Befehl exec und dann mache ich das cb passieren neben der Code zugänglich zu sein, oder wenn Sie Sie können nicht einen asynchronen Stil verwenden tun Sie es synchron mit child_process.execSync(command[,options])

Verwandte Themen