2012-05-01 19 views
6

Quiero ejecutar el comando soem admin con parámetros de java.cómo ejecutar el comando mongo admin desde java

Los comandos son:

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

¿Cómo puedo hacerlo desde el controlador de java?

El código siguiente no funciona:

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

Respuesta

14

me acaba de encontrar

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

Esta respuesta fue útil para mí. Simplemente señalaré que necesitaba conectarme a un 'mongos', un simple' mongod' no es suficiente. Puede ser obvio, pero no lo vi aquí explícitamente. – jmmut

+0

'mongo.getDb (" admin "). RunCommand' hubiera sido más intuitivo. –

-1

¿Ha asegurado que se haya autenticado con el PP con éxito?

¿Has probado db.eval (COMMAND_THAT_YOU_WANT_TO_EVAL);

+0

db.eval() tiene dos argumentos. No sé qué objetos ... args debería ser – Julias

+0

Es posible que desee ver más de cerca @Julias. El segundo argumento es una lista de argumentos de longitud variable; esto significa que puede ser cero o más argumentos. – user1367351

+0

Tenga en cuenta que esto no funciona en entornos fragmentados –

0

Solo quiero agregar que la respuesta de Julias es correcta, pero ahora está obsoleta. Usted podría utilizar la nueva API (Document clase es de paquete org.bson):

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))); 
Cuestiones relacionadas