Vorschau & Erklären
Erklärt den Unterschied zwischen der Vorschau, die die DSL-Abfrage/Pipeline vor der Ausführung überprüft, und dem Erklären, das den tatsächlichen MongoDB-Ausführungsplan anfordert.
vorschau()
preview() diagnostiziert die aktuelle DSL, indem es die zu erstellende Abfrage/Pipeline als Document rendert, ohne die Abfrage an MongoDB auszuführen. Es ist eine API zur Überprüfung der Build-Ergebnisse, nicht des tatsächlichen Ausführungsplans.
Mono<Document> preview = dsl
.executeEntity(User.class, MongoTemplateName.FRONT)
.fields(pair("status", "ACTIVE"))
.end()
.findAll()
.paging(0, 20)
.sorts(sort -> sort.desc("id"))
.preview();• klassisch findAll, find, count, exists, distinct
• root aggregation()
• Atlas Search findAll/find/count/existsQuery
• Vector Search findAll/find/count/existsQuery
erklären()
explain() führt die tatsächliche MongoDB Driver-Erkläroperation aus, daher ist eine Datenbankverbindung erforderlich.
Mono<Document> explain = dsl
.executeEntity(User.class, MongoTemplateName.FRONT)
.fields(pair("status", "ACTIVE"))
.end()
.findAll()
.explain(ExplainVerbosity.EXECUTION_STATS);Die Werte von ExplainVerbosity wie QUERY_PLANNER, EXECUTION_STATS, ALL_PLANS_EXECUTIONS des Drivers können direkt übergeben werden.
Gleiches gilt für 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();