From 8b31ba18369b563a99fa6010037b7fde1fa6489b Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Mon, 9 May 2016 10:41:24 +0200 Subject: [PATCH] DATAMONGO-1425 - Polishing. Add NotContaining to documentation. Add integration test for Containing/NotContaining on collection properties. Original pull request: #363. --- ...tractPersonRepositoryIntegrationTests.java | 24 +++++++++++++++++++ .../mongodb/repository/PersonRepository.java | 4 ++++ .../reference/mongo-repositories.adoc | 8 +++++++ 3 files changed, 36 insertions(+) diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java index 277172f12..ae2c22e5b 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java @@ -86,8 +86,10 @@ public abstract class AbstractPersonRepositoryIntegrationTests { dave = new Person("Dave", "Matthews", 42); oliver = new Person("Oliver August", "Matthews", 4); carter = new Person("Carter", "Beauford", 49); + carter.setSkills(Arrays.asList("Drums", "percussion", "vocals")); Thread.sleep(10); boyd = new Person("Boyd", "Tinsley", 45); + boyd.setSkills(Arrays.asList("Violin", "Electric Violin", "Viola", "Mandolin", "Vocals", "Guitar")); stefan = new Person("Stefan", "Lessard", 34); leroi = new Person("Leroi", "Moore", 41); @@ -1272,4 +1274,26 @@ public abstract class AbstractPersonRepositoryIntegrationTests { assertThat(result, not(hasItem(boyd))); } + /** + * @see DATAMONGO-1425 + */ + @Test + public void findBySkillsContains() throws Exception { + + List result = repository.findBySkillsContains(Arrays.asList("Drums")); + assertThat(result.size(), is(1)); + assertThat(result, hasItem(carter)); + } + + /** + * @see DATAMONGO-1425 + */ + @Test + public void findBySkillsNotContains() throws Exception { + + List result = repository.findBySkillsNotContains(Arrays.asList("Drums")); + assertThat(result.size(), is((int) (repository.count() - 1))); + assertThat(result, not(hasItem(carter))); + } + } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/PersonRepository.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/PersonRepository.java index 00a91b4e4..6874dc62f 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/PersonRepository.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/PersonRepository.java @@ -93,6 +93,10 @@ public interface PersonRepository extends MongoRepository, Query List findByFirstnameLikeOrderByLastnameAsc(String firstname, Sort sort); + List findBySkillsContains(List skills); + + List findBySkillsNotContains(List skills); + @Query("{'age' : { '$lt' : ?0 } }") List findByAgeLessThan(int age, Sort sort); diff --git a/src/main/asciidoc/reference/mongo-repositories.adoc b/src/main/asciidoc/reference/mongo-repositories.adoc index 46dd88b06..e484731b7 100644 --- a/src/main/asciidoc/reference/mongo-repositories.adoc +++ b/src/main/asciidoc/reference/mongo-repositories.adoc @@ -212,10 +212,18 @@ NOTE: Note that for version 1.0 we currently don't support referring to paramete | `findByFirstnameContaining(String name)` | `{"firstname" : name} (name as regex)` +| `NotContaining` on String +| `findByFirstnameNotContaining(String name)` +| `{"firstname" : { "$not" : name}} (name as regex)` + | `Containing` on Collection | `findByAddressesContaining(Address address)` | `{"addresses" : { "$in" : address}}` +| `NotContaining` on Collection +| `findByAddressesNotContaining(Address address)` +| `{"addresses" : { "$not" : { "$in" : address}}}` + | `Regex` | `findByFirstnameRegex(String firstname)` | `{"firstname" : {"$regex" : firstname }}`