diff --git a/pom.xml b/pom.xml
index f518c186f5..97221866da 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-4745-SNAPSHOT
pom
Spring Data MongoDB
diff --git a/spring-data-mongodb-benchmarks/pom.xml b/spring-data-mongodb-benchmarks/pom.xml
index a3dc49f892..899f457740 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-4745-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb-distribution/pom.xml b/spring-data-mongodb-distribution/pom.xml
index e33930bfd2..cfa904b17a 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-4745-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml
index fafe9c8793..91d21b111c 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-4745-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SetWindowFieldsOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SetWindowFieldsOperation.java
index ee90b12f9a..a01c081216 100644
--- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SetWindowFieldsOperation.java
+++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SetWindowFieldsOperation.java
@@ -70,7 +70,7 @@ public static SetWindowFieldsOperationBuilder builder() {
@Override
public ExposedFields getFields() {
- return ExposedFields.nonSynthetic(Fields.from(output.fields.toArray(new Field[0])));
+ return ExposedFields.synthetic(Fields.from(output.fields.toArray(new Field[0])));
}
@Override
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/SetWindowFieldsOperationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/SetWindowFieldsOperationTests.java
index 2ed243df69..97a5faf1c4 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/SetWindowFieldsOperationTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/SetWindowFieldsOperationTests.java
@@ -73,6 +73,29 @@ void executesSetWindowFieldsOperationCorrectly() {
238, 378);
}
+ @Test // GH-4745
+ void exposesFieldsToNextStageCorrectly() {
+
+ initCakeSales();
+
+ SetWindowFieldsOperation setWindowFieldsOperation = SetWindowFieldsOperation.builder() //
+ .partitionByField("state") // resolves to field ref "$state"
+ .sortBy(Sort.by(Direction.ASC, "date")) // resolves to "orderDate"
+ .output(AccumulatorOperators.valueOf("qty").sum()) // resolves to "$quantity"
+ .within(Windows.documents().fromUnbounded().toCurrent().build()) //
+ .as("cumulativeQuantityForState") //
+ .build(); //
+
+ AggregationResults results = mongoTemplate.aggregateAndReturn(Document.class)
+ .by(Aggregation.newAggregation(CakeSale.class, setWindowFieldsOperation,
+ /* and now project on the field to see it can be referenced */
+ Aggregation.project("cumulativeQuantityForState")))
+ .all();
+
+ assertThat(results.getMappedResults()).map(it -> it.get("cumulativeQuantityForState")).contains(162, 282, 427, 134,
+ 238, 378);
+ }
+
@Test // GH-3711
void executesSetWindowFieldsOperationWithPartitionExpressionCorrectly() {