2013-03-15 16 views
8

node.js/javascript中是否有任何庫允許個人在代碼中使用mongoimport使用Javascript/Node.js在代碼內執行mongoimport

據我的理解,mongoimport有點像.exe,你必須先執行它才能使用它的文本輸入環境。

是否有可能在我的代碼中執行mongoimport,然後解析我的代碼中直接需要的任何命令?

我當前算法包括:

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

obj是一個對象,它規定了什麼功能,以解析成JSON.stringify與node.js的的res方法(其請求的HTTP響應)

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

然後我使用mongoimport將這個JSON文檔導入到我的MongoDB中。

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

這種方法顯然是低效率的。我想在一個去做所有這些步驟。

幫助表示讚賞

+0

你看過MongoDB node.js驅動嗎?如果你想直接從node.js服務到MongoDB,這就是你想要使用的。文檔在這裏:http://docs.mongodb.org/ecosystem/drivers/node-js/ – 2013-03-15 16:24:25

+0

爲了擴展詹姆斯所說的話,我認爲你對mongoimport的用途有些誤解。您與mongodb的大多數交互都將通過驅動程序進行。該驅動程序允許您通過特定語言(在本例中爲javascript)插入,更新和刪除數據庫中的文檔(對象)。 Mongoimport不應該用於數據庫的正常插入,它主要用於導入從其他數據源(如其他數據庫或應用程序)導出的數據。 – ACE 2013-03-15 17:50:52

+0

你說得對。我目前對使用MongoDB有誤解。 我目前正在從幾個(千個)網站上抓取標題,然後我會在幾個月的時間內進行分析。我將改變我的算法來通過頭來做一個insert()頭,而不是進行導入。你怎麼看? db.scrape.insert(JSON.stringify(OBJ,NULL,2)); – theGreenCabbage 2013-03-18 14:27:58

回答

0

我絕不是一個節點專家 - 但如果你現有的JSON文件,你可以在節點的shell命令描述here或以各種answers執行mongoimport。

+0

他說他知道這一點。他問的是如何在JavaScript中代替mongo shell來做'mongoimport'。 – Benny 2015-06-08 18:42:57

+0

他問「是否可以在我的代碼中執行mongoimport」。 我鏈接到的第一篇文章標題爲「使用Node.js執行Unix命令」 - 從技術上講,這是可行的。但我意識到,這可能不是他在效率方面想到的。 – thomers 2015-06-09 18:13:04

0

這是我要做的事在我的代碼

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

我執行的是mongoimport命令,然後我通過CB接下來的程序代碼可以接觸,或者,如果你不使用異步風格,你可以與child_process.execSync(command[,options])同步