diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveFindOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveFindOperation.java index a96c6b106..8cc56a7e7 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveFindOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveFindOperation.java @@ -46,6 +46,7 @@ import org.springframework.data.mongodb.core.query.Query; * * @author Mark Paluch * @author Christoph Strobl + * @author Juergen Zimmermann * @since 2.0 */ public interface ReactiveFindOperation { @@ -275,6 +276,18 @@ public interface ReactiveFindOperation { * @throws IllegalArgumentException if resultType is {@literal null}. */ TerminatingDistinct matching(Query query); + + /** + * Set the filter {@link CriteriaDefinition criteria} to be used. + * + * @param criteriaDefinition must not be {@literal null}. + * @return new instance of {@link TerminatingFind}. + * @throws IllegalArgumentException if query is {@literal null}. + * @since 3.0 + */ + default TerminatingDistinct matching(CriteriaDefinition criteriaDefinition) { + return matching(Query.query(criteriaDefinition)); + } } /** diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveFindOperationSupportTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveFindOperationSupportTests.java index e2e200c96..a2eb57275 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveFindOperationSupportTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveFindOperationSupportTests.java @@ -59,6 +59,7 @@ import com.mongodb.client.MongoClient; * * @author Mark Paluch * @author Christoph Strobl + * @author Juergen Zimmermann */ @ExtendWith(MongoClientExtension.class) class ReactiveFindOperationSupportTests { @@ -171,6 +172,14 @@ class ReactiveFindOperationSupportTests { .verifyComplete(); } + @Test // DATAMONGO-2507 + void findAllWithProjectionByCriteria() { + + template.query(Person.class).as(Jedi.class).matching(where("firstname").is("luke")).all() + .as(StepVerifier::create).consumeNextWith(it -> assertThat(it).isInstanceOf(Jedi.class)) // + .verifyComplete(); + } + @Test // DATAMONGO-1719 void findAllByWithCollectionUsingMappingInformation() {