From 4694c97b5ff303f41bb49900dd015ed882e5af5b Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Fri, 5 Jul 2024 14:53:13 +0200 Subject: [PATCH 1/2] Prepare issue branch. --- pom.xml | 2 +- spring-data-mongodb-benchmarks/pom.xml | 2 +- spring-data-mongodb-distribution/pom.xml | 2 +- spring-data-mongodb/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index de66da1866..0662d6891f 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-mongodb-parent - 4.4.0-SNAPSHOT + 4.4.x-GH-4736-SNAPSHOT pom Spring Data MongoDB diff --git a/spring-data-mongodb-benchmarks/pom.xml b/spring-data-mongodb-benchmarks/pom.xml index a3dc49f892..aa6936a49a 100644 --- a/spring-data-mongodb-benchmarks/pom.xml +++ b/spring-data-mongodb-benchmarks/pom.xml @@ -7,7 +7,7 @@ org.springframework.data spring-data-mongodb-parent - 4.4.0-SNAPSHOT + 4.4.x-GH-4736-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb-distribution/pom.xml b/spring-data-mongodb-distribution/pom.xml index e33930bfd2..b3638f4a40 100644 --- a/spring-data-mongodb-distribution/pom.xml +++ b/spring-data-mongodb-distribution/pom.xml @@ -15,7 +15,7 @@ org.springframework.data spring-data-mongodb-parent - 4.4.0-SNAPSHOT + 4.4.x-GH-4736-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml index fafe9c8793..18be263691 100644 --- a/spring-data-mongodb/pom.xml +++ b/spring-data-mongodb/pom.xml @@ -13,7 +13,7 @@ org.springframework.data spring-data-mongodb-parent - 4.4.0-SNAPSHOT + 4.4.x-GH-4736-SNAPSHOT ../pom.xml From c142b6d844d8fae5318ab90f3cedaf12983de72b Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Fri, 5 Jul 2024 15:23:12 +0200 Subject: [PATCH 2/2] Fix id mapping when using $all operator. Fix the id mapping for queries using the $all operator. Prior to this change the collection nature of the id values was not preserved leading to an invalid query. --- .../data/mongodb/core/convert/QueryMapper.java | 2 +- .../mongodb/core/convert/QueryMapperUnitTests.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java index 3d27e20f34..916fe46ef7 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java @@ -719,7 +719,7 @@ private Object convertIdField(Field documentField, Object source) { for (Entry entry : valueDbo.entrySet()) { String key = entry.getKey(); - if ("$nin".equals(key) || "$in".equals(key)) { + if ("$nin".equals(key) || "$in".equals(key) || "$all".equals(key)) { List ids = new ArrayList<>(); for (Object id : (Iterable) valueDbo.get(key)) { ids.add(convertId(id, getIdTypeForField(documentField))); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/QueryMapperUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/QueryMapperUnitTests.java index d08f68dbd3..8fe9acbe6f 100755 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/QueryMapperUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/QueryMapperUnitTests.java @@ -1684,6 +1684,18 @@ void convertsNestedOperatorValueForPropertyContainingListThatHasValueConverter() assertThat(mappedObject).isEqualTo("{ 'text' : { $gt : 'gnirps', $in : [ 'atad' ] } }"); } + @Test // GH-4736 + void allOperatorShouldConvertIdCollection() { + + ObjectId oid = ObjectId.get(); + Criteria criteria = new Criteria().andOperator(where("name").isNull().and("id").all(List.of(oid.toString()))); + + org.bson.Document mappedObject = mapper.getMappedObject(criteria.getCriteriaObject(), + context.getPersistentEntity(Customer.class)); + + assertThat(mappedObject).containsEntry("$and.[0]._id.$all", List.of(oid)); + } + class WithSimpleMap { Map simpleMap; }