@@ -33,6 +33,7 @@ import com.mongodb.DBObject;
|
|||||||
* Gateway to {@literal array} aggregation operations.
|
* Gateway to {@literal array} aggregation operations.
|
||||||
*
|
*
|
||||||
* @author Christoph Strobl
|
* @author Christoph Strobl
|
||||||
|
* @author Mark Paluch
|
||||||
* @since 1.0
|
* @since 1.0
|
||||||
*/
|
*/
|
||||||
public class ArrayOperators {
|
public class ArrayOperators {
|
||||||
@@ -249,7 +250,8 @@ public class ArrayOperators {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Reduce startingWith(Object initialValue) {
|
public Reduce startingWith(Object initialValue) {
|
||||||
return (usesFieldRef() ? Reduce.arrayOf(fieldReference) : Reduce.arrayOf(expression))
|
return (usesFieldRef() ? Reduce.arrayOf(fieldReference)
|
||||||
|
: Reduce.arrayOf(expression))
|
||||||
.withInitialValue(initialValue).reduce(expressions);
|
.withInitialValue(initialValue).reduce(expressions);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ public class ProjectionOperationUnitTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test // DATAMONGO-586
|
@Test // DATAMONGO-586
|
||||||
public void arithmenticProjectionOperationWithoutAlias() {
|
public void arithmeticProjectionOperationWithoutAlias() {
|
||||||
|
|
||||||
String fieldName = "a";
|
String fieldName = "a";
|
||||||
ProjectionOperationBuilder operation = new ProjectionOperation().and(fieldName).plus(1);
|
ProjectionOperationBuilder operation = new ProjectionOperation().and(fieldName).plus(1);
|
||||||
@@ -131,7 +131,7 @@ public class ProjectionOperationUnitTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test // DATAMONGO-586
|
@Test // DATAMONGO-586
|
||||||
public void arithmenticProjectionOperationPlus() {
|
public void arithmeticProjectionOperationPlus() {
|
||||||
|
|
||||||
String fieldName = "a";
|
String fieldName = "a";
|
||||||
String fieldAlias = "b";
|
String fieldAlias = "b";
|
||||||
@@ -145,7 +145,7 @@ public class ProjectionOperationUnitTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test // DATAMONGO-586
|
@Test // DATAMONGO-586
|
||||||
public void arithmenticProjectionOperationMinus() {
|
public void arithmeticProjectionOperationMinus() {
|
||||||
|
|
||||||
String fieldName = "a";
|
String fieldName = "a";
|
||||||
String fieldAlias = "b";
|
String fieldAlias = "b";
|
||||||
@@ -159,7 +159,7 @@ public class ProjectionOperationUnitTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test // DATAMONGO-586
|
@Test // DATAMONGO-586
|
||||||
public void arithmenticProjectionOperationMultiply() {
|
public void arithmeticProjectionOperationMultiply() {
|
||||||
|
|
||||||
String fieldName = "a";
|
String fieldName = "a";
|
||||||
String fieldAlias = "b";
|
String fieldAlias = "b";
|
||||||
@@ -173,7 +173,7 @@ public class ProjectionOperationUnitTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test // DATAMONGO-586
|
@Test // DATAMONGO-586
|
||||||
public void arithmenticProjectionOperationDivide() {
|
public void arithmeticProjectionOperationDivide() {
|
||||||
|
|
||||||
String fieldName = "a";
|
String fieldName = "a";
|
||||||
String fieldAlias = "b";
|
String fieldAlias = "b";
|
||||||
@@ -187,13 +187,13 @@ public class ProjectionOperationUnitTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = IllegalArgumentException.class) // DATAMONGO-586
|
@Test(expected = IllegalArgumentException.class) // DATAMONGO-586
|
||||||
public void arithmenticProjectionOperationDivideByZeroException() {
|
public void arithmeticProjectionOperationDivideByZeroException() {
|
||||||
|
|
||||||
new ProjectionOperation().and("a").divide(0);
|
new ProjectionOperation().and("a").divide(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // DATAMONGO-586
|
@Test // DATAMONGO-586
|
||||||
public void arithmenticProjectionOperationMod() {
|
public void arithmeticProjectionOperationMod() {
|
||||||
|
|
||||||
String fieldName = "a";
|
String fieldName = "a";
|
||||||
String fieldAlias = "b";
|
String fieldAlias = "b";
|
||||||
@@ -238,7 +238,7 @@ public class ProjectionOperationUnitTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = IllegalArgumentException.class)
|
@Test(expected = IllegalArgumentException.class)
|
||||||
public void arithmenticProjectionOperationModByZeroException() {
|
public void arithmeticProjectionOperationModByZeroException() {
|
||||||
|
|
||||||
new ProjectionOperation().and("a").mod(0);
|
new ProjectionOperation().and("a").mod(0);
|
||||||
}
|
}
|
||||||
@@ -1574,7 +1574,7 @@ public class ProjectionOperationUnitTests {
|
|||||||
@Test // DATAMONGO-1843
|
@Test // DATAMONGO-1843
|
||||||
public void shouldRenderReduceWithInputAndInExpressionsCorrectly() {
|
public void shouldRenderReduceWithInputAndInExpressionsCorrectly() {
|
||||||
|
|
||||||
DBObject exprected = (DBObject) JSON.parse(
|
DBObject expected = (DBObject) JSON.parse(
|
||||||
"{ \"$project\" : { \"results\" : { \"$reduce\" : { \"input\" : { \"$slice\" : [\"$array\", 5] }, \"initialValue\" : \"\", \"in\" : { \"$concat\" : [\"$$value\", \"/\", \"$$this\"] } } } } }");
|
"{ \"$project\" : { \"results\" : { \"$reduce\" : { \"input\" : { \"$slice\" : [\"$array\", 5] }, \"initialValue\" : \"\", \"in\" : { \"$concat\" : [\"$$value\", \"/\", \"$$this\"] } } } } }");
|
||||||
|
|
||||||
Reduce reduceEntryPoint = Reduce.arrayOf(Slice.sliceArrayOf("array").itemCount(5)) //
|
Reduce reduceEntryPoint = Reduce.arrayOf(Slice.sliceArrayOf("array").itemCount(5)) //
|
||||||
@@ -1586,10 +1586,10 @@ public class ProjectionOperationUnitTests {
|
|||||||
.startingWith("");
|
.startingWith("");
|
||||||
|
|
||||||
assertThat(project().and(reduceEntryPoint).as("results").toDBObject(Aggregation.DEFAULT_CONTEXT),
|
assertThat(project().and(reduceEntryPoint).as("results").toDBObject(Aggregation.DEFAULT_CONTEXT),
|
||||||
Matchers.is(exprected));
|
is(expected));
|
||||||
|
|
||||||
assertThat(project().and(arrayEntryPoint).as("results").toDBObject(Aggregation.DEFAULT_CONTEXT),
|
assertThat(project().and(arrayEntryPoint).as("results").toDBObject(Aggregation.DEFAULT_CONTEXT),
|
||||||
Matchers.is(exprected));
|
is(expected));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // DATAMONGO-1548
|
@Test // DATAMONGO-1548
|
||||||
|
|||||||
Reference in New Issue
Block a user