Query ArangoDB for Arrays

The reason is that the IN operator works by searching for the value on its left-hand side in each member of the array on the right side.

With the following the query, this will work if "Politics" is a member of document.categories[*].title:

FOR document IN documents FILTER "Politics" IN document.categories[*].title RETURN document

However the following will not work query even if "Politics" is a member of document.categories[*].title:

FOR document IN documents FILTER [ "Politics", "Law" ] IN document.categories[*].title RETURN document

This is because it will be searched for the exact value [ "Politics", "Law" ] in each member on the right side, and this will not be present. What you are probably looking for is a comparison that looks for "Politics" and "Law" separately, e.g.:

FOR document IN documents 
LET contained = (
  FOR title IN [ "Politics", "Law" ]   /* or @categoriesArray */
    FILTER title IN document.categories[*].title 
    RETURN title
)
FILTER LENGTH(contained) > 0
RETURN document

Tags:

Aql

Arangodb