Browse Source

DATAMONGO-2360 - Polishing.

Apply index hints in ReactiveMongoTemplate.count(…).

Original pull request: #788.
pull/793/head
Mark Paluch 6 years ago
parent
commit
004e8ba0ea
  1. 3
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java
  2. 12
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveMongoTemplateUnitTests.java

3
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java

@ -1275,6 +1275,9 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati @@ -1275,6 +1275,9 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati
if (query.getSkip() > 0) {
options.skip((int) query.getSkip());
}
if (StringUtils.hasText(query.getHint())) {
options.hint(Document.parse(query.getHint()));
}
operations.forType(entityClass).getCollation(query).map(Collation::toMongoCollation) //
.ifPresent(options::collation);

12
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveMongoTemplateUnitTests.java

@ -407,6 +407,18 @@ public class ReactiveMongoTemplateUnitTests { @@ -407,6 +407,18 @@ public class ReactiveMongoTemplateUnitTests {
assertThat(options.getValue().getLimit()).isEqualTo(100);
}
@Test // DATAMONGO-2360
public void countShouldApplyQueryHintIfPresent() {
Document queryHint = new Document("age", 1);
template.count(new Query().withHint(queryHint), Person.class, "star-wars").subscribe();
ArgumentCaptor<CountOptions> options = ArgumentCaptor.forClass(CountOptions.class);
verify(collection).count(any(), options.capture());
assertThat(options.getValue().getHint()).isEqualTo(queryHint);
}
@Test // DATAMONGO-2215
public void updateShouldApplyArrayFilters() {

Loading…
Cancel
Save