Preview & Explain

実行前にDSLクエリ/パイプラインを確認するプレビューと、実際のMongoDB実行計画を要求する説明の違いを説明します。


preview()

preview() はMongoDBにクエリを実行せず、現在のDSLが生成するクエリ/パイプラインを診断用の Document としてレンダリングします。実際の実行計画ではなく、ビルド結果を確認するAPIです。

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();

• クラシック findAll, find, count, exists, distinct

• ルート aggregation()

• Atlas Search findAll/find/count/existsQuery

• ベクトル検索 findAll/find/count/existsQuery

explain()

explain() は実際のMongoDB Driverの説明操作を実行するため、データベース接続が必要です。

java
Mono<Document> explain = dsl
    .executeEntity(User.class, MongoTemplateName.FRONT)
    .fields(pair("status", "ACTIVE"))
    .end()
    .findAll()
    .explain(ExplainVerbosity.EXECUTION_STATS);

Driverの QUERY_PLANNER, EXECUTION_STATS, ALL_PLANS_EXECUTIONS などの ExplainVerbosity 値をそのまま渡すことができます。

Search / Vectorでも同様に使用

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. 無断転載を禁じます。紹介プライバシーポリシー