Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.

Executar um comando de banco de dados

Neste guia, você pode aprender como executar um reconhecimento de data center com o driver Go. Você pode usar 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 reconhecimento de data center de agregação.

Para executar um banco de dados, você deve especificar o reconhecimento de data center e quaisquer parâmetros relevantes em um documento, em seguida, passar o documento para um método wrapper. O documento de comando deve ser um tipo de preservação de ordem, como bson.D. O driver Go fornece os seguintes métodos para executar reconhecimento de data center do banco de dados:

  • RunCommand(), que retorna a resposta do comando como um tipo SingleResult . Você pode usar este método com qualquer reconhecimento de data center de banco de dados.

  • RunCommandCursor(), que retorna a resposta do comando como um tipo Cursor . Você pode usar esse método se o reconhecimento de data center retornar vários documento de resultado.

O código a seguir mostra como usar o método RunCommand() para executar o comando hello , que retorna informações sobre a role do membro atual no conjunto de réplicas, em um reconhecimento de data center:

command := bson.D{{"hello", 1}} var result bson.Merr = db.RunCommand(context.TODO(), command).Decode(&result)

Para obter uma lista completa dos comandos do banco de dados e dos parâmetros correspondentes, consulte a seção Informações adicionais.

Observação

readPreference

RunCommand() e RunCommandCursor() não obedecem à preferência de leitura que você pode ter definido para o objeto Database em outro lugar do seu código. Você pode definir uma preferência de leitura para a execução do comando passando um objeto RunCmdOptions para qualquer um dos métodos:

opts := options.RunCmd().SetReadPreference(readpref.Primary())cursor, err := db.RunCommandCursor(context.TODO(), command, opts)

Para obter mais informações sobre as opções de preferência de leitura, consulte Configurações de leitura e gravar.

Cada método retorna um objeto SingleResult ou um cursor que contém a resposta do reconhecimento de data center após a execução do comando. Cada reconhecimento de data center executa uma função diferente, portanto, o conteúdo da resposta pode variar entre comandos de banco de dados. 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 a hora do cluster assinado. O tempo de cluster é um tempo lógico usado para ordenar operações.

O documento contém os seguintes campos:

  • clusterTime, que é o carimbo de data/hora do cluster mais alto conhecido para o nó.

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

O código a seguir mostra como você pode usar o RunCommand() método para executar o explain comando para uma count operação na flowers collection do reconhecimento de db data center . O comando explain é executado no modo de detalhamento "queryPlanner" :

db := client.Database("db") // Creates commands to count documents in a collection and explain// how the count command runscountCommand := bson.D{{"count", "flowers"}}explainCommand := bson.D{{"explain", countCommand}, {"verbosity", "queryPlanner"}} // Retrieves results of the explain commandvar result bson.Merr = db.RunCommand(context.TODO(), explainCommand).Decode(&result)

Na saída, você deve ver campos explicando a execução da operação count , como o plano vencedor, que é o plano selecionado pelo otimizador de query e quaisquer planos rejeitados. A saída também contém informações sobre a execução do comando explain :

{ "$clusterTime": { "clusterTime": { "T": 1673969525, "I": 24 }, "signature": {...} }, "command": { "$db": "db", "count": "flowers" }, "explainVersion": "1", "ok": 1, "operationTime": { "T": 1673969525, "I": 24 }, "queryPlanner": { "indexFilterSet": false, "maxIndexedAndSolutionsReached": false, "maxIndexedOrSolutionsReached": false, "maxScansToExplodeReached": false, "namespace": "db.flowers", "rejectedPlans": [], "winningPlan": { "stage": "RECORD_STORE_FAST_COUNT" } }, "serverInfo": {...}, "serverParameters": { "internalDocumentSourceGroupMaxMemoryBytes": 104857600, ... }}

Observação

Exemplo de configuraçã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 Criar um MongoClient. Este exemplo também usa o banco de dados sample_restaurants incluído nos conjuntos de dados de amostra do Atlas. Você pode carregá-los em seu banco de dados em um cluster gratuito no MongoDB Atlas seguindo as etapas em Comece a usar o Atlas.

O exemplo a seguir recupera estatísticas sobre o banco de dados sample_restaurants:

// Runs a database command by using the Go driverpackage main import ( "context" "encoding/json" "fmt" "log" "os" "github.com/joho/godotenv" "go.mongodb.org/mongo-driver/v2/bson" "go.mongodb.org/mongo-driver/v2/mongo" "go.mongodb.org/mongo-driver/v2/mongo/options") func main() { if err := godotenv.Load(); err != nil { log.Println("No .env file found") } var uri string if uri = os.Getenv("MONGODB_URI"); uri == "" { log.Fatal("You must set your 'MONGODB_URI' environment variable. See\n\t https://www.mongodb.com/pt-br/docs/drivers/go/current/connect/mongoclient/#environment-variable") } client, err := mongo.Connect(options.Client().ApplyURI(uri)) if err != nil { panic(err) } defer func() { if err = client.Disconnect(context.TODO()); err != nil { panic(err) } }() { db := client.Database("sample_restaurants") // Retrieves statistics about the specified database command := bson.D{{"dbStats", 1}} var result bson.M // Runs the command and prints the database statistics err := db.RunCommand(context.TODO(), command).Decode(&result) // Prints a message if any errors occur during the command execution if err != nil { panic(err) } /* When you run this file, it should print something similar to the following: { "avgObjSize": 548.4101901854896, "collections": 2, "dataSize": 14014074, "db": "sample_restaurants", "fileSize": 0, "indexSize": 286720, "indexes": 2, "nsSizeMB": 0, "numExtents": 0, "objects": 25554, "ok": 1, "storageSize": 8257536, "totalFreeStorageSize": 0, "views": 0 } */ output, err := json.MarshalIndent(result, "", " ") if err != nil { panic(err) } fmt.Printf("%s\n", output) }}

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

Para saber como recuperar dados de um cursor, consulte a página de fundamentos do Access Data from a Cursor .