2012-05-01 3 views
6

javaのパラメータでsoem adminコマンドを実行します。javaからmongo adminコマンドを実行する方法

コマンドは次のとおりです。

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

どのように私はJavaドライバからそれを行うことができますか?

次のコードが動作しません:

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

この答えは私のために有用でした。私は 'mongos'に接続する必要があることを指摘します、単純な' mongod'だけでは不十分です。それは明らかかもしれませんが、私はここでそれを明示的に見ませんでした。 – jmmut

+0

'mongo.getDb(" admin ")。runCommand'はより直感的でした。 –

-1

はあなたが成功したデシベルに認証されているを確認しました見つかりましたか?

db.eval(COMMAND_THAT_YOU_WANT_TO_EVAL)を試しましたか?

+0

db.eval()には2つの引数があります。私はオブジェクトが何であるかわからない... argは – Julias

+0

であるべきである。あなたはもっと詳しく見たいかもしれない@Julias。 2番目の引数は可変長の引数リストです。この手段には0個以上の引数を指定できます。 – user1367351

+0

これはシャード環境では機能しません –

0

私はちょうどそのジュリアスの答えが正しいことを追加したいが、今は非難されています。 あなたは(Documentクラスがパッケージorg.bsonからである)新しいAPIを使用することができます。

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))); 
関連する問題