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.

java
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.

java
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.

java
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();
© 2026 Byeolnaerim. Tous droits réservés.PrésentationPolitique de confidentialité