Как сделать запрос соответствия с условием ИЛИ в OrientDB - PullRequest
0 голосов
/ 26 августа 2018

Как записать совпадение с условием OR в OrientDB?

EG: Я хочу найти файлы, которые есть у пользователя accessTo, и файлы, к которым принадлежит пользователь группы, имеют доступ.

select   from (
MATCH
{class: user, where:(userid='User1'), as: u},
{as:u}-accessTo->{class: so,where:(projectId='Project1'), as: r},
{as:u}-memberOf->{class: group, where:(projectId='Project1')}-accessTo-> 
{class: so,as: r}
RETURN r)

1 Ответ

0 голосов
/ 27 августа 2018

В настоящее время в операторе MATCH нет опции OR, поэтому необходимо использовать два запроса и unionAll:

select  unionAll($a, $b) 
LET
   $a = (MATCH
      {class: user, where:(userid='User1'), as: u},
      {as:u}-accessTo->{class: so,where:(projectId='Project1'), as: r},
   RETURN r),
   $b = (MATCH
      {class: user, where:(userid='User1'), as: u},
      {as:u}-memberOf->{class: group, where:(projectId='Project1')}-accessTo-> 
      {class: so,as: r}
   RETURN r),
)
...