@ -87,6 +87,7 @@ import com.mongodb.client.MongoCollection;
* @author Maninder Singh
* @author Maninder Singh
* @author Sergey Shcherbakov
* @author Sergey Shcherbakov
* @author Minsu Kim
* @author Minsu Kim
* @author Julia Lee
* /
* /
@ExtendWith ( MongoTemplateExtension . class )
@ExtendWith ( MongoTemplateExtension . class )
public class AggregationTests {
public class AggregationTests {
@ -116,7 +117,7 @@ public class AggregationTests {
mongoTemplate . flush ( Product . class , UserWithLikes . class , DATAMONGO753 . class , Data . class , DATAMONGO788 . class ,
mongoTemplate . flush ( Product . class , UserWithLikes . class , DATAMONGO753 . class , Data . class , DATAMONGO788 . class ,
User . class , Person . class , Reservation . class , Venue . class , MeterData . class , LineItem . class , InventoryItem . class ,
User . class , Person . class , Reservation . class , Venue . class , MeterData . class , LineItem . class , InventoryItem . class ,
Sales . class , Sales2 . class , Employee . class , Art . class , Venue . class ) ;
Sales . class , Sales2 . class , Employee . class , Art . class , Venue . class , Item . class ) ;
mongoTemplate . dropCollection ( INPUT_COLLECTION ) ;
mongoTemplate . dropCollection ( INPUT_COLLECTION ) ;
mongoTemplate . dropCollection ( "personQueryTemp" ) ;
mongoTemplate . dropCollection ( "personQueryTemp" ) ;
@ -1962,6 +1963,23 @@ public class AggregationTests {
assertThat ( aggregate . getMappedResults ( ) ) . contains ( widget ) ;
assertThat ( aggregate . getMappedResults ( ) ) . contains ( widget ) ;
}
}
@Test // GH-4443
void shouldHonorFieldAliasesForFieldReferencesUsingFieldExposingOperation ( ) {
Item item1 = Item . builder ( ) . itemId ( "1" ) . tags ( Arrays . asList ( "a" , "b" ) ) . build ( ) ;
Item item2 = Item . builder ( ) . itemId ( "1" ) . tags ( Arrays . asList ( "a" , "c" ) ) . build ( ) ;
mongoTemplate . insert ( Arrays . asList ( item1 , item2 ) , Item . class ) ;
TypedAggregation < Item > aggregation = newAggregation ( Item . class ,
match ( where ( "itemId" ) . is ( "1" ) ) ,
unwind ( "tags" ) ,
match ( where ( "itemId" ) . is ( "1" ) . and ( "tags" ) . is ( "c" ) ) ) ;
AggregationResults < Document > results = mongoTemplate . aggregate ( aggregation , Document . class ) ;
List < Document > mappedResults = results . getMappedResults ( ) ;
assertThat ( mappedResults ) . hasSize ( 1 ) ;
assertThat ( mappedResults . get ( 0 ) ) . containsEntry ( "item_id" , "1" ) ;
}
private void createUsersWithReferencedPersons ( ) {
private void createUsersWithReferencedPersons ( ) {
mongoTemplate . dropCollection ( User . class ) ;
mongoTemplate . dropCollection ( User . class ) ;
@ -2220,7 +2238,7 @@ public class AggregationTests {
List < Item > items ;
List < Item > items ;
}
}
// DATAMONGO-1491
// DATAMONGO-1491, GH-4443
@lombok.Data
@lombok.Data
@Builder
@Builder
static class Item {
static class Item {
@ -2229,6 +2247,7 @@ public class AggregationTests {
String itemId ;
String itemId ;
Integer quantity ;
Integer quantity ;
Long price ;
Long price ;
List < String > tags = new ArrayList < > ( ) ;
}
}
// DATAMONGO-1538
// DATAMONGO-1538