2012-01-05 9 views
1

mongodb 데이터베이스 문서에 두 개의 ID가 있습니다. 나는이 ID에 스크립트를 통해 인덱스를 만들어서 ensureIndex 명령을 반복해서 실행할 필요가 없도록해야합니다.mongodb 쉘에서 mongodb 쿼리를 갖는 스크립트 실행

db.getCollection("elements").ensureIndex({customerId:1}); 
db.getCollection("elements").ensureIndex({userId:1}); 
........ 

나는 스크립트를 실행하기 만하면됩니다. 모든 아이디어 mongodb 셸에서 스크립트를 실행하는 방법? 또한 스크립트의 확장은 무엇입니까?

주히.

+0

다시 실행 하시겠습니까, 아니면 무엇을 원하십니까? –

+1

그런데 유용한 답변을 받아 들여야합니다. –

답변

12

자바 스크립트 파일 (확장자는 .js)에 명령을 입력하고 mongo 콘솔 유틸리티를 사용하여 실행할 수 있습니다. 이처럼 :

db.getCollection("elements").ensureIndex({customerId:1}); 
db.getCollection("elements").ensureIndex({userId:1}); 
.... 
+0

그래, 또한 일부 포인터 여기 좀보세요 : http://www.mongodb.org/display/DOCS/Scripting+the+shell –

+0

나를 위해 좋은 작품 .. :) BTW .. 잘 Sharded에서 작동합니까 환경? 내가 몽고 껍질에서 달리는다면 내가 달리고있는 파편에 반영 될거야. 그렇지 않으면. 샤스에서 .js를 따로 달리야 할까? – juhi

+0

'mongos'에 대해 실행하면 모든 샤드에서 실행됩니다. –

8

당신은 또한 MongoDB의 쉘에서 스크립트를 실행할 수 있습니다 : create_indexes.js 파일이 명령을 포함 할

mongo --host my_host --port my_port my_db create_indexes.js 

. 필자는 함수 호출에 편리하도록 함수에 추가하는 것을 좋아합니다. 이 같은 스크립트를 작성 :

var ensureIndexes = function() { 
    db.getCollection("elements").ensureIndex({customerId:1}); 
    db.getCollection("elements").ensureIndex({userId:1}); ........ 
} 

저장라는 이름의 파일 ensureIndexes.js 위를, 다음 몽고 쉘에서 입력 :

load('ensureIndexes.js') 

지금 당신이 함수를 호출하는 ensureIndexes()를 입력 할 수 있습니다 . 나는 그런 유틸리티 함수를 포함하는 많은 스크립트를 가지고있다.

+0

이것은 mongodb shell이 ​​제공하는 js 함수 이외의 우리의 커스텀 함수를 보장 할 좋은 트릭입니다 : :) BTW ... Sharded 환경에서 잘 작동할까요? 내가 몽고 껍질에서 달리는다면 내가 달리고있는 파편에 반영 될거야. 그렇지 않으면. 샤스에서 .js를 따로 달리야 할까? – juhi

+1

@juhi 네, 그렇게 할 수 있습니다. 이 페이지를 참조하십시오 : http://www.mongodb.org/display/DOCS/Server-side+Code+Execution 특히 스크립트 서버 측 저장 섹션. 그런 다음 어디서나 실행할 수 있습니다. – dlaidlaw

+0

은이 팁을 좋아합니다! 감사! – the0ther

4

OS와 같은 유닉스를 사용하고 있다면 도움이 될 것입니다.

유닉스 쉘을 사용하여 리디렉션했습니다.

그래서 UNIX 명령 행에서 다음을 입력 : 당신이 당신의 명령을 진술 할 수있는 your_script.js 내부

mongo < your_script.js 

.

관련 문제