diff --git a/src/main/java/org/springframework/data/couchbase/core/query/QueryCriteria.java b/src/main/java/org/springframework/data/couchbase/core/query/QueryCriteria.java index 7f1305812..4b7da2459 100644 --- a/src/main/java/org/springframework/data/couchbase/core/query/QueryCriteria.java +++ b/src/main/java/org/springframework/data/couchbase/core/query/QueryCriteria.java @@ -192,6 +192,13 @@ public QueryCriteria containing(@Nullable Object o) { return this; } + public QueryCriteria arrayContaining(@Nullable Object o) { + operator = "ARRAY_CONTAINING"; + value = new Object[] { o }; + format = "array_containing(%1$s, %3$s)"; + return this; + } + public QueryCriteria notContaining(@Nullable Object o) { value = new QueryCriteria[] { wrap(containing(o)) }; operator = "NOT"; diff --git a/src/test/java/org/springframework/data/couchbase/core/query/QueryCriteriaTests.java b/src/test/java/org/springframework/data/couchbase/core/query/QueryCriteriaTests.java index ca1e06afd..cc563e015 100644 --- a/src/test/java/org/springframework/data/couchbase/core/query/QueryCriteriaTests.java +++ b/src/test/java/org/springframework/data/couchbase/core/query/QueryCriteriaTests.java @@ -123,14 +123,11 @@ void testStartingWith() { assertEquals("`name` like (\"Cou\"||\"%\")", c.export()); } - /* cannot do this properly yet because in arg to when() in - * startingWith() cannot be a QueryCriteria @Test void testStartingWithExpr() { QueryCriteria c = where(i("name")).startingWith(where(i("name")).plus("xxx")); - assertEquals("`name` like (((`name` || "xxx") || ""%""))", c.export()); + assertEquals("`name` like (((`name` || \"xxx\"))||\"%\")", c.export()); } - */ @Test void testEndingWith() { @@ -162,6 +159,12 @@ void testNotContaining() { assertEquals("not( (contains(`name`, \"Elvis\")) )", c.export()); } + @Test + void testArrayContaining() { + QueryCriteria c = where(i("name")).arrayContaining("Elvis"); + assertEquals("array_containing(`name`, \"Elvis\")", c.export()); + } + @Test void testLike() { QueryCriteria c = where(i("name")).like("%ouch%");