2012-05-01 4 views
6

java의 매개 변수로 soem admin 명령을 실행하고 싶습니다.java에서 mongo admin 명령을 실행하는 방법

명령은 다음과 같습니다

{ enablesharding : "test" } 
{ shardcollection : "test.test_collection", key : {"number":1} } 

어떻게 자바 드라이버에서 그것을 할 수 있습니까?

다음 코드는 작동하지 않습니다

mongo.getDb("admin").command("{shardcollection : \"test.test_collection\", key:\"number\":1} }") 

답변

14

가 난 그냥

DB db = mongo.getDB("admin"); 
DBObject cmd = new BasicDBObject(); 
cmd.put("shardcollection", "testDB.x"); 
cmd.put("key", new BasicDBObject("userId", 1)); 
CommandResult result = db.command(cmd); 
+0

이 대답은 나를 위해 유용 : 당신은 새로운 API를 (Document 클래스 패키지입니다 org.bson) 사용할 수 있습니다. 나는 단지 '몽고스 (mongos)'에 연결해야한다고 지적 할 것이고, 단순한 '몽고드 (mongod)'로는 충분하지 않다. 그것은 명백 할 수도 있지만 여기서는 명시 적으로 보지 못했습니다. – jmmut

+0

'mongo.getDb ("admin"). runCommand'가 더 직관적이었을 것입니다. –

-1

당신이 성공적으로 DB에 인증 한하고 있는가 발견?

시도해 보셨습니까 db.eval (COMMAND_THAT_YOU_WANT_TO_EVAL);

+0

db.eval()에는 두 개의 인수가 있습니다. 나는 무엇을 해야할지 모르겠다 ... args는 – Julias

+0

이어야한다. 더 자세히 보길 원할지도 모른다. @Julias. 두 번째 인수는 가변 길이 인수 목록입니다. 이것은 0 개 이상의 인수가 될 수 있음을 의미합니다. – user1367351

+0

이것은 샤르드 환경에서는 작동하지 않는다는 점에 유의하십시오. –

0

줄리아의 대답은 정확하지만 지금은 더 이상 사용되지 않습니다.

MongoDatabase database = client.getDatabase("admin"); 
Document documentA = database.runCommand(new Document("enablesharding", "test")); 
Document documentB = database.runCommand(
     new Document("shardcollection", "testDB.x").append("key", new Document("userId", 1))); 
관련 문제