Pré-visualização e Explicação
Explica a diferença entre a pré-visualização que verifica a consulta/pipeline DSL antes da execução e o plano de execução real do MongoDB solicitado pelo explain.
pré-visualização()
preview() renderiza a consulta/pipeline atual gerada pela DSL como um Document para diagnóstico, sem executar a consulta no MongoDB. É uma API para verificar o resultado da construção, não o plano de execução real.
Mono<Document> preview = dsl
.executeEntity(User.class, MongoTemplateName.FRONT)
.fields(pair("status", "ACTIVE"))
.end()
.findAll()
.paging(0, 20)
.sorts(sort -> sort.desc("id"))
.preview();• clássico findAll, find, count, exists, distinct
• agregação raiz aggregation()
• Atlas Search findAll/find/count/existsQuery
• Vector Search findAll/find/count/existsQuery
explain()
explain() executa a operação explain real do Driver MongoDB, portanto, é necessária uma conexão com o banco de dados.
Mono<Document> explain = dsl
.executeEntity(User.class, MongoTemplateName.FRONT)
.fields(pair("status", "ACTIVE"))
.end()
.findAll()
.explain(ExplainVerbosity.EXECUTION_STATS);Os valores ExplainVerbosity do Driver, como QUERY_PLANNER, EXECUTION_STATS, ALL_PLANS_EXECUTIONS, podem ser passados diretamente.
Usado da mesma forma em Search / Vector.
Mono<Document> searchPreview = dsl
.executeEntity(Article.class, key)
.search("articles_default")
.text(text -> text.path("title").query("mongodb"))
.findAll()
.preview();
Mono<Document> vectorExplain = dsl
.executeEntity(Article.class, key)
.vectorSearch("articles_vector_index")
.path("embedding")
.queryVector(embedding)
.limit(20)
.approximate(200)
.findAll()
.explain();