diff --git a/pom.xml b/pom.xml index a43bf9aba2..68add961af 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-mongodb-parent - 3.4.3-SNAPSHOT + 3.4.x-GH-4123-SNAPSHOT pom Spring Data MongoDB diff --git a/spring-data-mongodb-benchmarks/pom.xml b/spring-data-mongodb-benchmarks/pom.xml index f24a3e50df..e83bcf09bc 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 - 3.4.3-SNAPSHOT + 3.4.x-GH-4123-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb-distribution/pom.xml b/spring-data-mongodb-distribution/pom.xml index 6795167821..03944b6c6f 100644 --- a/spring-data-mongodb-distribution/pom.xml +++ b/spring-data-mongodb-distribution/pom.xml @@ -14,7 +14,7 @@ org.springframework.data spring-data-mongodb-parent - 3.4.3-SNAPSHOT + 3.4.x-GH-4123-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml index 8db4d2d243..3bacf4c405 100644 --- a/spring-data-mongodb/pom.xml +++ b/spring-data-mongodb/pom.xml @@ -11,7 +11,7 @@ org.springframework.data spring-data-mongodb-parent - 3.4.3-SNAPSHOT + 3.4.x-GH-4123-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/Fields.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/Fields.java index e5150a3e35..3151ccbd05 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/Fields.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/Fields.java @@ -267,7 +267,7 @@ public String getName() { */ public String getTarget() { - if (isLocalVar()) { + if (isLocalVar() || pointsToDBRefId()) { return this.getRaw(); } @@ -296,6 +296,10 @@ public boolean isLocalVar() { return raw.startsWith("$$") && !raw.startsWith("$$$"); } + protected boolean pointsToDBRefId() { // see https://jira.mongodb.org/browse/SERVER-14466 + return raw.endsWith(".$id"); + } + /** * @return * @since 1.10 diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/FieldsUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/FieldsUnitTests.java index d3408226a2..fe82768b8b 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/FieldsUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/FieldsUnitTests.java @@ -117,6 +117,13 @@ public void stripsLeadingDollarsFromTarget() { assertThat(Fields.field("$$$$target").getTarget()).isEqualTo("target"); } + @Test // GH-4123 + public void keepsRawMappingToDbRefId() { + + assertThat(Fields.field("$id").getName()).isEqualTo("id"); + assertThat(Fields.field("person.$id").getTarget()).isEqualTo("person.$id"); + } + private static void verify(Field field, String name, String target) { assertThat(field).isNotNull();