Значение статистики.FullCount неверно при использовании AQL В операторе

#java #arangodb #aql

#java #arangodb #aql

Вопрос:

ArangoDB3-3.7.2_win64 arangodbJavaDriver=6.7.5

Предполагая, что коллекция содержит более 100 документов, следующий запрос AQL через драйвер Java с использованием AqlQueryOptions().fullCount(true) возвращает ожидаемые значения в stats.fullCount:

 FOR a IN SomeCollection FILTER a.field = @p1 SORT a.field ASC LIMIT 0,100 RETURN a
  

Но в аналогичном запросе с использованием оператора IN значение stats.fullCount неожиданно равно 100:

 FOR a IN SomeCollection FILTER a.field IN [@p1, @p2] SORT a.field ASC LIMIT 0,100 RETURN a
  

Как ни странно, когда я понижаю рейтинг до ArangoDB3-3.6.3_win64, оба запроса работают должным образом и возвращают правильное значение в stats.fullCount

Можно ли восстановить правильную функциональность?

Ответ №1:

Оператор равенства в AQL есть == , а = оператор присваивания. Итак, ваш первый запрос должен быть таким:

 FOR a IN SomeCollection FILTER a.field == @p1 SORT a.field ASC LIMIT 0,100 RETURN a