diff --git a/pom.xml b/pom.xml
index 93a4e6bf2a..dd27ef0766 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.data
spring-data-mongodb-parent
- 1.7.0.BUILD-SNAPSHOT
+ 1.7.0.DATAMONGO-1133-SNAPSHOT
pom
Spring Data MongoDB
diff --git a/spring-data-mongodb-cross-store/pom.xml b/spring-data-mongodb-cross-store/pom.xml
index c7610beee4..073ae09cd3 100644
--- a/spring-data-mongodb-cross-store/pom.xml
+++ b/spring-data-mongodb-cross-store/pom.xml
@@ -6,7 +6,7 @@
org.springframework.data
spring-data-mongodb-parent
- 1.7.0.BUILD-SNAPSHOT
+ 1.7.0.DATAMONGO-1133-SNAPSHOT
../pom.xml
@@ -48,7 +48,7 @@
org.springframework.data
spring-data-mongodb
- 1.7.0.BUILD-SNAPSHOT
+ 1.7.0.DATAMONGO-1133-SNAPSHOT
diff --git a/spring-data-mongodb-distribution/pom.xml b/spring-data-mongodb-distribution/pom.xml
index 13110137b6..990b41b8c0 100644
--- a/spring-data-mongodb-distribution/pom.xml
+++ b/spring-data-mongodb-distribution/pom.xml
@@ -13,7 +13,7 @@
org.springframework.data
spring-data-mongodb-parent
- 1.7.0.BUILD-SNAPSHOT
+ 1.7.0.DATAMONGO-1133-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb-log4j/pom.xml b/spring-data-mongodb-log4j/pom.xml
index 6ff09e4577..b65023c23f 100644
--- a/spring-data-mongodb-log4j/pom.xml
+++ b/spring-data-mongodb-log4j/pom.xml
@@ -5,7 +5,7 @@
org.springframework.data
spring-data-mongodb-parent
- 1.7.0.BUILD-SNAPSHOT
+ 1.7.0.DATAMONGO-1133-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml
index 7c2d818c42..96e06f644a 100644
--- a/spring-data-mongodb/pom.xml
+++ b/spring-data-mongodb/pom.xml
@@ -11,7 +11,7 @@
org.springframework.data
spring-data-mongodb-parent
- 1.7.0.BUILD-SNAPSHOT
+ 1.7.0.DATAMONGO-1133-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationTests.java
index 799e0c6b6d..918831bf6c 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationTests.java
@@ -125,6 +125,7 @@ private void cleanDb() {
mongoTemplate.dropCollection(Person.class);
mongoTemplate.dropCollection(Reservation.class);
mongoTemplate.dropCollection(Venue.class);
+ mongoTemplate.dropCollection(MeterData.class);
}
/**
@@ -1044,6 +1045,30 @@ public void shouldSupportGeoNearQueriesForAggregationWithDistanceField() {
assertThat((Double) firstResult.get("distance"), closeTo(117.620092203928, 0.00001));
}
+ /**
+ * @see DATAMONGO-1133
+ */
+ @Test
+ public void shouldHonorFieldAliasesForFieldReferences() {
+
+ mongoTemplate.insert(new MeterData("m1", "counter1", 42));
+ mongoTemplate.insert(new MeterData("m1", "counter1", 13));
+ mongoTemplate.insert(new MeterData("m1", "counter1", 45));
+
+ TypedAggregation agg = newAggregation(MeterData.class, //
+ match(where("resourceId").is("m1")), //
+ group("counterName").sum("counterVolume").as("totalValue") //
+ );
+
+ AggregationResults results = mongoTemplate.aggregate(agg, DBObject.class);
+
+ assertThat(results.getMappedResults(), hasSize(1));
+ DBObject result = results.getMappedResults().get(0);
+
+ assertThat(result.get("_id"), is(equalTo((Object) "counter1")));
+ assertThat(result.get("totalValue"), is(equalTo((Object) 42.0)));
+ }
+
private void assertLikeStats(LikeStats like, String id, long count) {
assertThat(like, is(notNullValue()));
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/MeterData.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/MeterData.java
new file mode 100644
index 0000000000..4981e3eac9
--- /dev/null
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/MeterData.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2015 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.data.mongodb.core.aggregation;
+
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.mapping.Field;
+
+/**
+ * @author Thomas Darimont
+ */
+public class MeterData {
+
+ @Id String resourceId;
+ @Field("counter_name") String counterName;
+ double counterVolume;
+
+ public MeterData() {}
+
+ public MeterData(String resourceId, String counterName, double counterVolume) {
+
+ this.resourceId = resourceId;
+ this.counterName = counterName;
+ this.counterVolume = counterVolume;
+ }
+}
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/TypeBasedAggregationOperationContextUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/TypeBasedAggregationOperationContextUnitTests.java
index c0c37bb38e..edace3a47d 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/TypeBasedAggregationOperationContextUnitTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/TypeBasedAggregationOperationContextUnitTests.java
@@ -169,6 +169,24 @@ public void rendersAggregationOptionsInTypedAggregationContextCorrectly() {
assertThat(dbo.get("cursor"), is((Object) new BasicDBObject("foo", 1)));
}
+ /**
+ * @see DATAMONGO-1133
+ */
+ @Test
+ public void shouldHonorAliasedFieldsInGroupExpressions() {
+
+ TypeBasedAggregationOperationContext context = getContext(MeterData.class);
+ TypedAggregation agg = newAggregation(MeterData.class,
+ group("counterName").sum("counterVolume").as("totalCounterVolume"));
+
+ DBObject dbo = agg.toDbObject("meterData", context);
+ DBObject group = getPipelineElementFromAggregationAt(dbo, 0);
+
+ DBObject definition = (DBObject) group.get("$group");
+
+ assertThat(definition.get("_id"), is(equalTo((Object) "$counter_name")));
+ }
+
@Document(collection = "person")
public static class FooPerson {