Какой лучший способ сделать запрос 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,

Другие вопросы по тегам