diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ArrayOperators.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ArrayOperators.java index 5a40abd244..1001c923c5 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ArrayOperators.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ArrayOperators.java @@ -33,6 +33,7 @@ * * @author Christoph Strobl * @author Mark Paluch + * @author Shashank Sharma * @since 1.0 */ public class ArrayOperators { @@ -1496,6 +1497,29 @@ public In containsValue(Object value) { }; } + /** + * Support for Aggregation In + * Search an Element in List of Objects to Filter + * Start creating {@link In}. + * @author Shashank Sharma + * @param elementList must not be {@literal null}. + * @return + */ + public static InBuilder arrayOf(final List elementList) { + + Assert.notNull(elementList, "Elements must not be null!"); + + return new InBuilder() { + + @Override + public In containsValue(Object value) { + + Assert.notNull(value, "Value must not be null!"); + return new In(Arrays.asList(value, elementList)); + } + }; + } + /** * @author Christoph Strobl */ diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/ArrayOperatorsUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/ArrayOperatorsUnitTests.java index 08329a6c4c..fa9f4f5974 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/ArrayOperatorsUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/ArrayOperatorsUnitTests.java @@ -61,4 +61,12 @@ public void toArrayWithArgumentList() { assertThat(ArrayToObject.arrayToObject(source).toDocument(Aggregation.DEFAULT_CONTEXT)) .isEqualTo(Document.parse("{ $arrayToObject: [ [ \"king\", \"shrewd\"], [ \"prince\", \"verity\" ] ] } ")); } + + @Test // DATAMONGO-2287 + public void inArrayAggregationWithArgumentList() { + + assertThat(ArrayOperators.In.arrayOf(Arrays.asList("Shashank", "Sharma")) + .containsValue("$userName").toDocument(Aggregation.DEFAULT_CONTEXT)) + .isEqualTo(Document.parse("{ \"$in\" : [\"$userName\", [\"Shashank\", \"Sharma\"]] }")); + } }