Какой лучший способ сделать запрос EXISTS в ArangoDB - PullRequest
0 голосов
/ 21 декабря 2018

Я хотел бы проверить, не является ли запрос (фильтр) не пустым, что-то вроде этого в PostgreSQL:

select EXISTS(select 1 from tab where tab.name = 'abc')

https://www.postgresql.org/docs/11/functions-subquery.html

Мой текущий подход в AQL:

RETURN LENGTH(for d in tab filter d.name = 'abc' RETURN 1) > 0

1 Ответ

0 голосов
/ 22 декабря 2018

Подзапрос FOR d IN tab FILTER d.name == 'abc' может найти соответствующий документ на ранней стадии, но продолжит поиск большего, потому что ограничение не определено.Поэтому я бы порекомендовал:

RETURN LENGTH(FOR d IN tab FILTER d.name == 'abc' LIMIT 1 RETURN true) > 0

В результате запроса будет возвращено [ true ].

Вы также можете RETURN d , начиная с версии 3.4.0 .Правило оптимизатора optimize-subqueries распознает шаблон LENGTH(... RETURN doc) и заменяет doc постоянным значением true.

...