AQL: коллекция не найдена.неблокирующий запрос - PullRequest
0 голосов
/ 28 марта 2019

Если я запускаю этот запрос:

FOR i IN [
    my_collection[*].my_prop,
    my_other_collection[*].my_prop,
    ]
RETURN i

Я получаю эту ошибку:

Запрос: AQL: коллекция не найдена: my_other_collection (во время анализа)

Это правда, что my_other_collection может не существовать, но я все еще хочу получить результат от my_collection.Как я могу сделать эту ошибку неблокируемой?

Ответы [ 2 ]

0 голосов
/ 31 марта 2019

Помимо двух методов, уже упомянутых в предыдущем ответе (поиск Arango и отдельная коллекция), вы можете сделать это в JavaScript, возможно, в Foxx: проверьте, существуют ли коллекции с db_collection (collection-name) Тогдасоздайте строку запроса, используя aql фрагменты и используйте union , чтобы объединить фрагменты и получить результаты из разных коллекций.Обратите внимание, что если коллекции большие, вы, вероятно, захотите отфильтровать результаты, а не просто извлекать все документы.

0 голосов
/ 30 марта 2019

Отсутствующая коллекция приведет к ошибке, и ее нельзя игнорировать или подавлять.Также не существует концепции коллекций с поздним связыванием, которые позволили бы вам оценивать строку как ссылку на коллекцию во время выполнения.Вкратце: это не поддерживается.

Вопрос в том, почему вы хотите использовать такой шаблон в первую очередь.Я предполагаю, что обе коллекции существуют, тогда она материализует полный массив, прежде чем что-либо возвращать, что, вероятно, требует большого объема памяти.

Было бы намного лучше хранить документы обеих коллекций в одной коллекции (вы можетедобавьте дополнительный атрибут type, чтобы различать их) или используйте представление ArangoSearch, чтобы можно было искать атрибуты индексов по коллекциям.

...