Menu Docs
Página inicial do Docs
/
MongoDB Atlas
/ /

Recuperar o plano de query e as estatísticas de execução

Nesta página

  • Sintaxe
  • Detalhamento
  • Explicar resposta
  • Limitações
  • Exemplos
  • queryPlanner
  • executionStats

A query do Atlas Search retorna informações sobre o plano de query $search e a estatística de execução quando a query é executada com o método explain . Quando você executa uma query com explain, o Atlas Search retorna um documento BSON contendo informações sobre como a query foi executada.

Dica

Veja também:

explicar comando

db.<myCollection>.explain("<verbosity>").aggregate([
{
$search: {
"<operator>": {
"<operator-options>"
}
}
}
])

O modo Verbosidade controla o comportamento do explain e a quantidade de informações retornadas. O valor pode ser um dos seguintes:

queryPlanner (padrão)
Informações sobre o plano de query. Não inclui o campo stats, que contém a estatística de execução da query.
Informações sobre o plano de query incluindo o campo stats, que contém estatísticas de execução para a query.
Informações sobre o plano de query incluindo o campo stats, que contém estatísticas de execução para a query.

Dica

Veja também:

A resposta explain é um documento BSON com chaves e valores que descrevem a estatística de execução da query. O documento explain no conjunto de resultados contém os seguintes campos:

Opção
Tipo
necessidade
Propósito
path
string
Opcional
Caminho para o operador, somente se não for a raiz.
type
string
Obrigatório
Nome da query Lucene que o operador do Atlas Search criou. Consulte Resumo estruturado da query Lucene para obter mais informações.
analyzer
string
Opcional
O analisador do Atlas Search usado com a query.
args
documento
Obrigatório
Informações sobre a query do Lucene. Para obter mais informações, consulte Resumo estruturado da query do Lucene.
stats
documento
Opcional
Explicar o detalhamento do tempo da query se explain foi executado com o detalhamento executionStats ou allPlansExecution.

Você não pode executar queries facet com explain.

Os exemplos seguintes utilizam a collection movies no banco de dados sample_mflix.

Dica

Se você já carregou o conjunto de dados de amostra, siga o tutorial Iniciar com Atlas Search para criar uma definição de índice e executar queries de Atlas Search.

O exemplo seguinte utiliza o operador text para fazer uma query do campo title com o modo de detalhamento queryPlanner.

db.movies.explain("queryPlanner").aggregate([
{
$search: {
"text": {
"path": "title",
"query": "yark",
"fuzzy": {
"maxEdits": 1,
"maxExpansions": 100,
}
}
}
}
])

A consulta retorna os seguintes resultados. Para saber mais sobre os elementos de resposta explain , consulte Explicar resposta.

{
"stages" : [
{
"$_internalSearchMongotRemote" : {
"mongotQuery" : {
"text" : {
"path" : "title",
"query" : "yark",
"fuzzy" : {
"maxEdits" : 1,
"maxExpansions" : 100
}
}
},
"explain" : {
"type" : "BooleanQuery",
"args" : {
"must" : [ ],
"mustNot" : [ ],
"should" : [
{
"type" : "BoostQuery",
"args" : {
"query" : {
"type" : "TermQuery",
"args" : {
"path" : "title",
"value" : "ark"
}
},
"boost" : 0.6666666269302368
}
},
{
"type" : "BoostQuery",
"args" : {
"query" : {
"type" : "TermQuery",
"args" : {
"path" : "title",
"value" : "yard"
}
},
"boost" : 0.75
}
},
{
"type" : "BoostQuery",
"args" : {
"query" : {
"type" : "TermQuery",
"args" : {
"path" : "title",
"value" : "mark"
}
},
"boost" : 0.75
}
},
{
"type" : "BoostQuery",
"args" : {
"query" : {
"type" : "TermQuery",
"args" : {
"path" : "title",
"value" : "park"
}
},
"boost" : 0.75
}
},
{
"type" : "BoostQuery",
"args" : {
"query" : {
"type" : "TermQuery",
"args" : {
"path" : "title",
"value" : "dark"
}
},
"boost" : 0.75
}
},
{
"type" : "BoostQuery",
"args" : {
"query" : {
"type" : "TermQuery",
"args" : {
"path" : "title",
"value" : "york"
}
},
"boost" : 0.75
}
}
],
"filter" : [ ],
"minimumShouldMatch" : 0
}
}
}
},
{
"$_internalSearchIdLookup" : { }
}
],
"serverInfo" : {
"host" : "atlas-example-shard-00-01.mongodb.net",
"port" : 27017,
"version" : "4.4.3",
"gitVersion" : "913d6b62acfbb344dde1b116f4161360acd8fd13"
},
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1612457287, 1),
"signature" : {
"hash" : BinData(0,"kzn7hY7NOduVIqcfx+40ENKbMKQ="),
"keyId" : NumberLong("1234567890123456789")
}
},
"operationTime" : Timestamp(1612457287, 1)
}

Para queries que especificam um estágio $limit no pipeline, os resultados do explain incluem a métrica mongotDocsRequested que mostra o número de documentos que o mongod solicitou do mongot.

Exemplo

{
"mongotQuery": {},
"explain": {},
"limit": <int>,
"sortSpec": {},
"mongotDocsRequested": <int>,
}

O exemplo a seguir usa o operador autocomplete para fazer uma query do campo title com o modo de detalhamento executionStats.

db.movies.explain("executionStats").aggregate([
{
"$search": {
"autocomplete": {
"path": "title",
"query": "pre",
"fuzzy": {
"maxEdits": 1,
"prefixLength": 1,
"maxExpansions": 256
}
}
}
}
])

A consulta retorna os seguintes resultados. Para saber mais sobre os elementos de resposta explain , consulte Explicar resposta.

{
"stages" : [
{
"$_internalSearchMongotRemote" : {
"mongotQuery" : {
"autocomplete" : {
"path" : "title",
"query" : "pre",
"fuzzy" : {
"maxEdits" : 1,
"prefixLength" : 1,
"maxExpansions" : 256
}
}
},
"explain" : {
"type" : "MultiTermQueryConstantScoreWrapper",
"args" : {
"queries" : [
{
"type" : "DefaultQuery",
"args" : {
"queryType" : "AutomatonQuery"
},
"stats" : {
"context" : {
"millisElapsed" : NumberDouble(0)
},
"match" : {
"millisElapsed" : NumberDouble(0)
},
"score" : {
"millisElapsed" : NumberDouble(0)
}
}
}
]
},
"stats" : {
"context" : {
"millisElapsed" : NumberDouble(0.816418),
"invocationCounts" : {
"createWeight" : NumberLong(1),
"createScorer" : NumberLong(2)
}
},
"match" : {
"millisElapsed" : NumberDouble(3.849778),
"invocationCounts" : {
"nextDoc" : NumberLong(656)
}
},
"score" : {
"millisElapsed" : NumberDouble(0.035349),
"invocationCounts" : {
"score" : NumberLong(655)
}
}
}
}
},
"nReturned" : NumberLong(0),
"executionTimeMillisEstimate" : NumberLong(20)
},
{
"$_internalSearchIdLookup" : { },
"nReturned" : NumberLong(0),
"executionTimeMillisEstimate" : NumberLong(20)
}
],
"serverInfo" : {
"host" : "atlas-example-shard-00-01.mongodb.net",
"port" : 27017,
"version" : "4.4.3",
"gitVersion" : "913d6b62acfbb344dde1b116f4161360acd8fd13"
},
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1612454116, 1),
"signature" : {
"hash" : BinData(0,"OY+SMPmdK//g6rFZkvSCQr3c3hM="),
"keyId" : NumberLong("1234567890123456789")
}
},
"operationTime" : Timestamp(1612454116, 1)
}