

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Conectar-se a uma fonte de dados MongoDB
<a name="AMG-mongodb-datasource"></a>

 A fonte de dados MongoDB permite que você visualize dados do MongoDB no Amazon Managed Grafana. 

**nota**  
Essa fonte de dados é somente para o Grafana Enterprise. Para obter mais informações, consulte [Gerenciar o acesso aos plug-ins do Enterprise](upgrade-to-enterprise-plugins.md).  
Além disso, em espaços de trabalho compatíveis com a versão 9 ou mais recente, essa fonte de dados pode requerer a instalação do plug-in apropriado. Para obter mais informações, consulte [Ampliar o espaço de trabalho com plug-ins](grafana-plugins.md).

## Usage
<a name="mongo-usage"></a>

### Editor de consultas
<a name="mongo-query-editor"></a>

 O editor de consultas é compatível com a mesma sintaxe do MongoDB Shell, com algumas limitações: \$1 Você só pode executar um comando/consulta. \$1 Somente comandos de leitura são suportados: **localizar** e **agregar** \$1 *A maioria dos* construtores de objetos não é suportada (com exceção de **ISODate**, que é suportado) 

 O editor expande a sintaxe do MongoDB Shell das seguintes maneiras: 
+  **Seleção do banco de dados**: você pode fornecer o nome do banco de dados no lugar do “db” normal: 
**nota**  
Você ainda pode usar “db”. Ele vai se referir ao banco de dados padrão em sua string de conexão.

  ```
  sample_mflix.movies.find()
  ```
+  **Classificação agregada**: normalmente, a classificação acontece com uma etapa dentro do pipeline agregado, no entanto, o nível gratuito do MongoDB Atlas não permite a classificação. Expandimos a sintaxe para permitir isso para aqueles que usam o nível gratuito. 
**nota**  
O MongoDB não executa a classificação com essa sintaxe. A classificação acontece depois que os resultados são consultados na coleção.

  ```
  sample_mflix.movies.aggregate({}).sort({"time": 1})
  ```
+  Com um editor em branco, **Ctrl \$1 Espaço** mostrará uma seleção de todos os bancos de dados disponíveis. 
+  Inserir um ponto após o banco de dados mostrará uma seleção de todas as coleções disponíveis para esse banco de dados. 
+  Inserir um ponto após a coleção mostrará os métodos de consulta disponíveis. 
+  Inserir um ponto após o método de consulta mostrará funções adicionais: classificar e limitar. 

#### Executar a consulta
<a name="mongo-running-the-query"></a>

 Pressione **Cmd \$1 S** para executar a consulta 

### Séries temporais
<a name="mongo-time-series"></a>

 Ao visualizar dados de séries temporais, o plug-in precisa saber qual campo usar como tempo. Basta projetar o campo com um alias de nome de “tempo”. O tipo de dado do campo deve ser uma data. 

 Você pode obrigar tipos de dados não datados até o momento. Isso permitirá o uso de campos sem data como o tempo da série temporal. O exemplo a seguir mostra como converter o campo int “ano” em uma data projetada como “hora” usando o operador de pipeline MongoDB \$1dateFromParts . 

```
sample_mflix.movies.aggregate([
{"$match": { "year": {"$gt" : 2000} }},
{"$group": { "_id": "$year", "count": { "$sum": 1 }}},
{"$project": { "_id": 0, "count": 1, "time": { "$dateFromParts": {"year": "$_id", "month": 2}}}}
]
).sort({"time": 1})
```

### Diagnóstico
<a name="mongo-diagnostics"></a>

 [Comandos de diagnóstico](https://docs.mongodb.com/manual/reference/command/nav-diagnostic/) 

 Atualmente, há suporte para os seguintes comandos de diagnóstico: “stats”, “ServerStatus”, “Status”, “GetLog”, replSetGet "“, “ConnectionStatus”, connPoolStats “BuildInfo”, “DBStats”, “HostInfo”, “LockInfo” 

 Exemplos: 

```
admin.connectionStatus()  // run the connectionStatus command
admin.connectionStatus({"authInfo.authenticatedUserRoles": 1})  // run and only return the "authInfo.authenticatedUserRoles" field
admin.connPoolStats({arg: "pool"})  // run the connPoolStats command and pass 1 argument
admin.serverStatus({args: {repl: 0, metrics:0}})  // run the serverStatus command and pass multiple args
```

### Macros
<a name="mongo-macros"></a>

 Você pode referenciar o intervalo de tempo do dashboard nas consultas.
+ ` $__timeFrom `: um macro que faz referência à hora de início do dashboard
+ ` $__timeTo `: um macro que faz referência à hora de término do dashboard

```
          $__timeTo -  ``` sample_mflix.movies.find({released: {$gt:
          "$__timeFrom"}}).sort({year: 1})
```

#### Variáveis de modelo
<a name="mongo-variables"></a>

O MongoDB é compatível com a ideia de “Variáveis compostas”, que permitem que você use uma variável como várias variáveis para realizar filtros complexos de várias chaves.

Para criar uma variável composta, use a convenção de nomenclatura de dividir as variáveis usando sublinhados (deve começar com sublinhado): `_var1_var2`. Ao consultar, a resposta deve estar no formato: `val1-val2`

**Exemplo: quero filtrar os resultados pelo nome do filme e pelo ano.**

1. Crie uma variável do tipo Consulta: `_movie_year`

1. Defina a consulta de variável como uma consulta que retornará uma matriz de itens com uma propriedade de filme-ano, conforme mostrado no exemplo a seguir.

   ```
   // Example sample_mflix.movies.aggregate([
             {"$match": {year: {"$gt": 2011}}},
             {"$project": {_id: 0, movie_year: {"$concat":
             ["$title", " - ", {"$toString":"$year"}]}}}
             ])
   ```

   ```
    // [{"movie-year": "Ted - 2016"},
             {"movie-year": "The Terminator -
             1985"}]
   ```

1. Agora, em sua consulta, você pode referenciar “Filme” e “Ano” como variáveis de modelo separadas usando a sintaxe “\$1\$1variable”. 

##### Usar filtros ad hoc
<a name="mongo-adhoc"></a>

Além da variável padrão do tipo “filtro ad hoc” de qualquer nome, uma segunda variável auxiliar deve ser criada. Deve ser um tipo “constante” com o nome “mongodb\$1adhoc\$1query” e um valor compatível com o editor de consultas. O resultado da consulta será usado para preencher os filtros selecionáveis. Você pode optar por ocultar essa variável da visualização, pois ela não tem mais nenhum propósito.

```
          sample_mflix.movies.aggregate([
          {"$group": { "_id": "$year"}},
          {"$project": { "year": "$_id","_id":
          0 }} ] )
```