2013-03-15 12 views
8

Esiste una libreria disponibile in node.js/javascript che consente a un individuo di utilizzare mongoimport nel codice?Esecuzione di mongoimport all'interno del codice con Javascript/Node.js

A mio parere, mongoimport è un po 'come un file .exe, che devi eseguire prima di poter utilizzare il suo ambiente di input di testo.

E 'possibile eseguire mongoimport nel mio codice e quindi analizzare i comandi che ho bisogno direttamente nel mio codice?

mio algoritmo attuale prevede:

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

obj è un oggetto che specifica quali funzioni per analizzare in JSON.stringify con il metodo della node.js res (che chiede risposte HTTP)

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

Poi Io uso mongoimport per importare questo documento JSON nel mio MongoDB.

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

Questo metodo è ovviamente inefficiente. Mi piacerebbe fare tutti questi passi in una direzione.

aiuto apprezzato

+0

Hai guardato il driver node.js di MongoDB? Questo è ciò che si desidera utilizzare se si desidera parlare direttamente da un servizio node.js a MongoDB. La documentazione è qui: http://docs.mongodb.org/ecosystem/drivers/node-js/ –

+0

Per estendere ciò che James ha detto, penso che tu abbia qualcosa di incomprensibile su ciò per cui mongoimport è usato. La maggior parte delle tue interazioni con mongodb avverrà attraverso un driver. Il driver consente di inserire, aggiornare ed eliminare documenti (oggetti) nel database attraverso una lingua specifica, in questo caso javascript. Mongoimport non dovrebbe essere usato per normali inserimenti nel tuo db, è principalmente usato per importare dati che sono stati esportati da altre fonti, come altri database o applicazioni. – ACE

+0

Hai ragione. Attualmente ho un malinteso con l'uso di MongoDB. Attualmente sto raschiando le intestazioni da un paio (migliaia) di siti, che poi analizzerò tra un paio di mesi. Cambierò il mio algoritmo per fare un'intestazione insert() per intestazione invece di fare un'importazione. Cosa ne pensi? db.scrape.insert (JSON.stringify (obj, null, 2)); – theGreenCabbage

risposta

0

io sono in alcun modo un esperto di nodi - ma se avete i file JSON esistente, si potrebbe eseguire mongoimport nel nodo di comando di shell come descritto here o in varie answers.

+0

Ha detto di esserne consapevole. Sta chiedendo come fare l'equivalente di 'mongoimport' in JavaScript invece della shell mongo. – Benny

+0

Ha chiesto "È possibile eseguire mongoimport nel mio codice". Il primo articolo a cui mi sono collegato è intitolato "Esegui un comando Unix con Node.js", quindi tecnicamente funzionerebbe. Ma sono consapevole che questo probabilmente non è quello che aveva in mente in termini di efficienza. – thomers

0

Questo è come lo faccio nel mio codice

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() 
}) 

Ho exec il comando mongoimport e poi fare passare il cb prossimo il codice per essere accessibile, o se non si utilizza uno stile asincrono è possibile fai in modo sincrono con child_process.execSync(command[,options])

Problemi correlati