Какой лучший способ сделать запрос EXISTS в ArangoDB
Я хотел бы проверить, если запрос (фильтр) не пустой, что-то вроде этого в 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 ответ
Решение
Подзапрос FOR d IN tab FILTER d.name = 'abc'
может найти соответствующий документ на ранней стадии, но продолжит поиск большего, потому что не определено ограничение. Поэтому я бы порекомендовал:
RETURN LENGTH(FOR d IN tab FILTER d.name = 'abc' LIMIT 1 RETURN true) > 0
Вы могли бы также RETURN d
начиная с v3.4.0. Правило оптимизатора optimize-subqueries
распознает шаблон LENGTH(... RETURN doc)
и заменяет doc
с постоянным значением true
,