2013-03-15 2 views
8

코드에서 mongoimport을 사용할 수있게 해주는 node.js/javascript에 라이브러리가 있습니까?Javascript/Node.js로 코드 내에 mongoimport 실행

mongoimport는 텍스트 입력 환경을 사용하기 전에 먼저 실행해야하는 .exe와 비슷합니다.

내 코드에서 mongoimport를 실행 한 다음 내 코드에서 직접 필요한 모든 명령을 구문 분석 할 수 있습니까?

내 현재의 알고리즘을 포함한다 :

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

obj가 함수는 다음 (어떤이 HTTP 응답을 요청하는)

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

Node.js를의 res 방법 JSON.stringify로 구문 분석을 지정하는 객체입니다 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/ –

+0

제임스가 말한 것을 확장하려면 몽고이 포트를 사용하는 것에 대해 잘못 이해 한 것으로 생각됩니다. mongodb와의 상호 작용의 대부분은 운전자를 통해 발생합니다. 드라이버를 사용하면 특정 언어 (이 경우에는 javascript)를 통해 데이터베이스에 문서 (개체)를 삽입, 업데이트 및 삭제할 수 있습니다. Mongoimport는 db에 정상적인 삽입을 위해 사용되어서는 안되며 다른 데이터베이스 나 응용 프로그램과 같은 다른 소스에서 반출 된 데이터를 가져 오는 데 주로 사용됩니다. – ACE

+0

당신 말이 맞아요. 현재 MongoDB 사용에 대한 오해가 있습니다. 나는 몇 달 동안의 분석을 할 몇 천 사이트에서 현재 헤더를 긁어 모으고 있습니다. 가져 오기 대신 머리글로 insert() 헤더를 수행하는 알고리즘을 변경합니다. 어떻게 생각해? db.scrape.insert (JSON.stringify (obj, null, 2)); – theGreenCabbage

답변

0

나는 어떠한 방식으로 노드 전문가는 아니지만 감사 -하지만 당신은 JSON 파일을 기존의 경우 here 설명 또는 다양한 answers에, 당신은 쉘 명령으로 노드에 mongoimport를 실행할 수 있습니다.

+0

그는 그 사실을 알고 있다고 말했습니다. 그는 mongo shell 대신에 JavaScript에서'mongoimport'와 같은 기능을하는 방법을 묻습니다. – Benny

+0

그는 "내 코드에 mongoimport를 실행할 수 있습니까?"라고 물었습니다. 내가 링크 된 첫 번째 기사는 "Unix Command with Node.js"라는 제목이 붙어 있습니다. - 기술적으로 이것은 작동 할 것입니다. 그러나 저는 이것이 아마도 효율성면에서 그가 염두에 두지 않은 것임을 알고 있습니다. – thomers

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

나는 코드가 accesible로 옆에 CB를 통과 할, 또는 비동기 스타일을 사용하지 않는 경우에 당신이 할 수있는 다음 mongoimport 명령을 간부 인 및 동 기적으로 수행하십시오 child_process.execSync(command[,options])