Menu Docs
Página inicial do Docs
/ /

Executar um comando de banco de dados

Neste guia, você pode aprender como executar um comando de banco de dados usando o driver Kotlin . Você pode usar comandos de banco de dados para executar uma variedade de tarefas administrativas e de diagnóstico, como buscar estatísticas do servidor , inicializar um conjunto de réplicas ou executar um pipeline de agregação .

Importante

Preferir métodos de driver em vez de reconhecimento de data center

O driver fornece métodos wrapper para muitos comandos de banco de dados. Recomendamos usar métodos de driver em vez de executar comandos de banco de dados quando possível.

Para executar tarefas administrativas, use o MongoDB Shell em vez do driver Kotlin . Chamar o db.runCommand() método dentro do shell é o método preferido para emitir comandos do banco de dados , pois ele fornece uma interface consistente entre o shell e os drivers.

Para executar um comando de banco de dados, especifique o comando e quaisquer parâmetros relevantes em um documento e, em seguida, passe o documento para o método runCommand().

O seguinte código mostra como você pode utilizar o método runCommand() para executar o comando dbStats, que retorna estatísticas de um banco de dados MongoDB especificado:

Observação

Esse exemplo se conecta a uma instância do MongoDB usando um URI de conexão. Para saber mais sobre como se conectar à sua instância do MongoDB , consulte o guia de conexão.

import com.mongodb.MongoException
import com.mongodb.kotlin.client.coroutine.MongoClient
import kotlinx.coroutines.runBlocking
import org.bson.BsonDocument
import org.bson.BsonInt64
import org.bson.json.JsonWriterSettings
fun main() = runBlocking {
// Replace the uri string with your MongoDB deployment's connection string
val uri = "<connection string uri>"
val mongoClient = MongoClient.create(uri)
val database = mongoClient.getDatabase("sample_mflix")
try {
val command = BsonDocument("dbStats", BsonInt64(1))
val commandResult = database.runCommand(command)
println(commandResult.toJson(JsonWriterSettings.builder().indent(true).build()))
} catch (me: MongoException) {
System.err.println("An error occurred: $me")
}
mongoClient.close()
}
{
"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
}

Para obter uma lista completa de comandos de banco de dados e os parâmetros correspondentes, consulte o guia Comandos de banco de dados.

Você pode especificar o comportamento de comando opcional para o método runCommand() incluindo um parâmetro readPreference. O exemplo a seguir mostra como especificar uma preferência de leitura e passá-la como uma opção para o método runCommand():

val command = Document("hello", 1)
val commandReadPreference = Document("readPreference", "secondary")
val result = database.runCommand(command, commandReadPreference)

Para obter mais informações sobre as opções de read preference, consulte Read preference no manual do servidor MongoDB.

Observação

O método runCommand() ignora a configuração de preferência de leitura que você pode ter definido em seu objeto database. Se você não especificar uma preferência de leitura, esse método usará a preferência de leitura primary .

O método runCommand() retorna um objeto Document que contém a resposta do banco de dados após a execução do comando. Cada comando de banco de dados executa uma função diferente, portanto, o conteúdo da resposta pode variar entre comandos. No entanto, cada resposta contém documentos com os seguintes campos:

Campo
Descrição

<command result>

Fornece campo específicos para o reconhecimento de data center do banco de dados. Por exemplo, count retorna o campo n e explain retorna o campo queryPlanner .

ok

Indica se o comando foi bem-sucedido (1) ou falhou (0).

operationTime

Indica a hora lógica da operação. O MongoDB usa o tempo lógico para solicitar operações. Para saber mais sobre o tempo lógico, consulte nossa publicação no blog sobre o Relógio Lógico Global.

$clusterTime

Fornece um documento que retorna o tempo de cluster assinado. O tempo do cluster é um tempo lógico usado para ordenar operações.

O documento contém os seguintes campos:

  • clusterTime: O carimbo de data/hora do maior tempo de cluster conhecido para o nó

  • signature: Um documento que contém o hash da hora do cluster e o ID da chave usada para assinar a hora do cluster

Para obter mais informações sobre os conceitos deste guia, consulte a seguinte documentação:

Voltar

Indexes

Nesta página