Aperçu & Expliquer
Explique la différence entre l'aperçu qui vérifie la requête/pipeline DSL avant l'exécution et l'explication qui demande le plan d'exécution réel de MongoDB.
aperçu()
preview() rend le Document de diagnostic de la requête/pipeline actuelle sans exécuter la requête sur MongoDB. C'est une API pour vérifier le résultat de construction, pas le plan d'exécution réel.
Mono<Document> preview = dsl
.executeEntity(User.class, MongoTemplateName.FRONT)
.fields(pair("status", "ACTIVE"))
.end()
.findAll()
.paging(0, 20)
.sorts(sort -> sort.desc("id"))
.preview();• classique findAll, find, count, exists, distinct
• agrégation racine aggregation()
• Recherche Atlas findAll/find/count/existsQuery
• Recherche vectorielle findAll/find/count/existsQuery
expliquer()
explain() exécute l'opération d'explication réelle du Driver MongoDB, donc une connexion à la base de données est nécessaire.
Mono<Document> explain = dsl
.executeEntity(User.class, MongoTemplateName.FRONT)
.fields(pair("status", "ACTIVE"))
.end()
.findAll()
.explain(ExplainVerbosity.EXECUTION_STATS);Les valeurs ExplainVerbosity comme QUERY_PLANNER, EXECUTION_STATS, ALL_PLANS_EXECUTIONS du Driver peuvent être transmises telles quelles.
Utilisé de la même manière pour la recherche / vectorielle.
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();