diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java index 6019229e3..921e31ee5 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java @@ -1446,7 +1446,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati */ @Override public Mono remove(Mono objectToRemove, String collection) { - return objectToRemove.flatMap(o -> remove(objectToRemove, collection)); + return objectToRemove.flatMap(it -> remove(it, collection)); } /* diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveMongoTemplateTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveMongoTemplateTests.java index 0998c6936..6d69a1ed3 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveMongoTemplateTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveMongoTemplateTests.java @@ -461,6 +461,52 @@ public class ReactiveMongoTemplateTests { StepVerifier.create(template.findOne(new Query(), Sample.class)).expectNext(data).verifyComplete(); } + @Test // DATAMONGO-1774 + public void removeWithEmptyMonoShouldDoNothing() { + + Sample spring = new Sample("100", "spring"); + Sample data = new Sample("200", "data"); + Sample mongodb = new Sample("300", "mongodb"); + + StepVerifier.create(template.insert(Arrays.asList(spring, data, mongodb), Sample.class)) // + .expectNextCount(3) // + .verifyComplete(); + + StepVerifier.create(template.remove(Mono.empty())).verifyComplete(); + StepVerifier.create(template.count(new Query(), Sample.class)).expectNext(3L).verifyComplete(); + } + + @Test // DATAMONGO-1774 + public void removeWithMonoShouldDeleteElement() { + + Sample spring = new Sample("100", "spring"); + Sample data = new Sample("200", "data"); + Sample mongodb = new Sample("300", "mongodb"); + + StepVerifier.create(template.insert(Arrays.asList(spring, data, mongodb), Sample.class)) // + .expectNextCount(3) // + .verifyComplete(); + + StepVerifier.create(template.remove(Mono.just(spring))).expectNextCount(1).verifyComplete(); + StepVerifier.create(template.count(new Query(), Sample.class)).expectNext(2L).verifyComplete(); + } + + @Test // DATAMONGO-1774 + public void removeWithMonoAndCollectionShouldDeleteElement() { + + Sample spring = new Sample("100", "spring"); + Sample data = new Sample("200", "data"); + Sample mongodb = new Sample("300", "mongodb"); + + StepVerifier.create(template.insert(Arrays.asList(spring, data, mongodb), Sample.class)) // + .expectNextCount(3) // + .verifyComplete(); + + StepVerifier.create(template.remove(Mono.just(spring), template.determineCollectionName(Sample.class))) + .expectNextCount(1).verifyComplete(); + StepVerifier.create(template.count(new Query(), Sample.class)).expectNext(2L).verifyComplete(); + } + @Test // DATAMONGO-1444 public void optimisticLockingHandling() {