|
|
|
|
@ -61,13 +61,7 @@ public class FilterExpressionUnitTests {
@@ -61,13 +61,7 @@ public class FilterExpressionUnitTests {
|
|
|
|
|
.and(filter("items").as("item").by(AggregationFunctionExpressions.GTE.of(Fields.field("item.price"), 100))) |
|
|
|
|
.as("items")); |
|
|
|
|
|
|
|
|
|
Document dbo = agg.toDocument("sales", aggregationContext); |
|
|
|
|
|
|
|
|
|
List<Object> pipeline = DocumentTestUtils.getAsDBList(dbo, "pipeline"); |
|
|
|
|
Document $project = DocumentTestUtils.getAsDocument((Document) pipeline.get(0), "$project"); |
|
|
|
|
Document items = DocumentTestUtils.getAsDocument($project, "items"); |
|
|
|
|
Document $filter = DocumentTestUtils.getAsDocument(items, "$filter"); |
|
|
|
|
|
|
|
|
|
Document $filter = extractFilterOperatorFromDocument(agg.toDocument("sales", aggregationContext)); |
|
|
|
|
Document expected = Document.parse("{" + //
|
|
|
|
|
"input: \"$items\"," + //
|
|
|
|
|
"as: \"item\"," + //
|
|
|
|
|
@ -83,13 +77,7 @@ public class FilterExpressionUnitTests {
@@ -83,13 +77,7 @@ public class FilterExpressionUnitTests {
|
|
|
|
|
TypedAggregation<Sales> agg = Aggregation.newAggregation(Sales.class, Aggregation.project().and("items") |
|
|
|
|
.filter("item", AggregationFunctionExpressions.GTE.of(Fields.field("item.price"), 100)).as("items")); |
|
|
|
|
|
|
|
|
|
Document dbo = agg.toDocument("sales", aggregationContext); |
|
|
|
|
|
|
|
|
|
List<Object> pipeline = DocumentTestUtils.getAsDBList(dbo, "pipeline"); |
|
|
|
|
Document $project = DocumentTestUtils.getAsDocument((Document) pipeline.get(0), "$project"); |
|
|
|
|
Document items = DocumentTestUtils.getAsDocument($project, "items"); |
|
|
|
|
Document $filter = DocumentTestUtils.getAsDocument(items, "$filter"); |
|
|
|
|
|
|
|
|
|
Document $filter = extractFilterOperatorFromDocument(agg.toDocument("sales", aggregationContext)); |
|
|
|
|
Document expected = Document.parse("{" + //
|
|
|
|
|
"input: \"$items\"," + //
|
|
|
|
|
"as: \"item\"," + //
|
|
|
|
|
@ -106,13 +94,7 @@ public class FilterExpressionUnitTests {
@@ -106,13 +94,7 @@ public class FilterExpressionUnitTests {
|
|
|
|
|
Aggregation.project().and(filter(Arrays.<Object> asList(1, "a", 2, null, 3.1D, 4, "5")).as("num") |
|
|
|
|
.by(AggregationFunctionExpressions.GTE.of(Fields.field("num"), 3))).as("items")); |
|
|
|
|
|
|
|
|
|
Document dbo = agg.toDocument("sales", aggregationContext); |
|
|
|
|
|
|
|
|
|
List<Object> pipeline = DocumentTestUtils.getAsDBList(dbo, "pipeline"); |
|
|
|
|
Document $project = DocumentTestUtils.getAsDocument((Document) pipeline.get(0), "$project"); |
|
|
|
|
Document items = DocumentTestUtils.getAsDocument($project, "items"); |
|
|
|
|
Document $filter = DocumentTestUtils.getAsDocument(items, "$filter"); |
|
|
|
|
|
|
|
|
|
Document $filter = extractFilterOperatorFromDocument(agg.toDocument("sales", aggregationContext)); |
|
|
|
|
Document expected = Document.parse("{" + //
|
|
|
|
|
"input: [ 1, \"a\", 2, null, 3.1, 4, \"5\" ]," + //
|
|
|
|
|
"as: \"num\"," + //
|
|
|
|
|
@ -129,13 +111,7 @@ public class FilterExpressionUnitTests {
@@ -129,13 +111,7 @@ public class FilterExpressionUnitTests {
|
|
|
|
|
.and(filter("items").as("item").by(ComparisonOperators.valueOf("item.price").greaterThan("field-1"))) |
|
|
|
|
.as("items")); |
|
|
|
|
|
|
|
|
|
Document dbo = agg.toDocument("sales", Aggregation.DEFAULT_CONTEXT); |
|
|
|
|
|
|
|
|
|
List<Object> pipeline = DocumentTestUtils.getAsDBList(dbo, "pipeline"); |
|
|
|
|
Document $project = DocumentTestUtils.getAsDocument((Document) pipeline.get(0), "$project"); |
|
|
|
|
Document items = DocumentTestUtils.getAsDocument($project, "items"); |
|
|
|
|
Document $filter = DocumentTestUtils.getAsDocument(items, "$filter"); |
|
|
|
|
|
|
|
|
|
Document $filter = extractFilterOperatorFromDocument(agg.toDocument("sales", Aggregation.DEFAULT_CONTEXT)); |
|
|
|
|
Document expected = Document.parse("{" + //
|
|
|
|
|
"input: \"$items\"," + //
|
|
|
|
|
"as: \"item\"," + //
|
|
|
|
|
@ -145,6 +121,14 @@ public class FilterExpressionUnitTests {
@@ -145,6 +121,14 @@ public class FilterExpressionUnitTests {
|
|
|
|
|
assertThat($filter).isEqualTo(new Document(expected)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private Document extractFilterOperatorFromDocument(Document source) { |
|
|
|
|
|
|
|
|
|
List<Object> pipeline = DocumentTestUtils.getAsDBList(source, "pipeline"); |
|
|
|
|
Document $project = DocumentTestUtils.getAsDocument((Document) pipeline.get(0), "$project"); |
|
|
|
|
Document items = DocumentTestUtils.getAsDocument($project, "items"); |
|
|
|
|
return DocumentTestUtils.getAsDocument(items, "$filter"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static class Sales { |
|
|
|
|
|
|
|
|
|
List<Object> items; |
|
|
|
|
|