Overview
En esta guía, puedes aprender cómo ejecutar operaciones de base de datos en bruto usando el método MongoDatabase.runCommand(). Una operación de base de datos sin procesar es un comando que puedes ejecutar directamente en la CLI del Servidor MongoDB. Estos comandos incluyen tareas administrativas y de diagnóstico, como obtener estadísticas del servidor o inicializar un set de réplicas. Llama al método runCommand() con un objeto de comando Bson en una instancia de un MongoDatabase para ejecutar tu operación de base de datos sin procesar.
Importante
Prefiere los métodos del controlador a los comandos de base de datos
El driver proporciona métodos contenedores para muchos comandos de base de datos. Recomendamos usar métodos de driver en vez de ejecutar comandos de base de datos cuando sea posible.
Para realizar tareas administrativas, utiliza el MongoDB Shell en vez del driver de Java. Llamar al método db.runCommand() dentro del shell es la manera preferida de emitir un comando de base de datos, ya que proporciona una interfaz coherente entre el shell y los drivers.
El método runCommand() acepta un comando en forma de un objeto Bson. Por defecto, runCommand devuelve un objeto de tipo org.bson.Document que contiene la salida del comando de base de datos. Puedes especificar un tipo de retorno para runCommand() como un segundo parámetro opcional.
Ejemplo de comando Ejecutar: archivo completo
En el siguiente código de ejemplo, enviamos el comando dbStats para solicitar estadísticas de una base de datos específica de MongoDB.
Nota
Este ejemplo se conecta a una instancia de MongoDB utilizando un URI de conexión. Para obtener más información sobre cómo conectarse a su instancia de MongoDB, consulte la guía de conexión.
// Runs a database command by using the Java driver package org.example; import org.bson.BsonDocument; import org.bson.BsonInt64; import org.bson.Document; import com.mongodb.MongoException; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.client.MongoDatabase; import org.bson.conversions.Bson; public class RunCommand { public static void main(String[] args) { // Replace the uri string with your MongoDB deployment's connection string String uri = "<connection string uri>"; try (MongoClient mongoClient = MongoClients.create(uri)) { MongoDatabase database = mongoClient.getDatabase("sample_mflix"); try { Bson command = new BsonDocument("dbStats", new BsonInt64(1)); // Retrieves statistics about the specified database Document commandResult = database.runCommand(command); // Prints the database statistics System.out.println("dbStats: " + commandResult.toJson()); } catch (MongoException me) { // Prints a message if any exceptions occur during the command execution System.err.println("An error occurred: " + me); } } } }
Al ejecutar el comando anterior, deberías ver una salida similar a la siguiente:
dbStats: {"db": "sample_mflix", "collections": 5, "views": 0, "objects": 75595, "avgObjSize": 692.1003770090614, "dataSize": 52319328, "storageSize": 29831168, "numExtents": 0, "indexes": 9, "indexSize": 14430208, "fileSize": 0, "nsSizeMB": 0, "ok": 1}
Tip
Legacy API
Si usas la API heredada, consulta la sección de preguntas frecuentes de la guía de la API heredada para conocer los cambios que debes realizar en este ejemplo de código.
Información Adicional
Documentación de la API
Para obtener más información sobre el método utilizado para ejecutar comandos de base de datos, consulta la siguiente documentación API: