2015-04-22 5 views
0

Возьмите, например, города США и скажите, что я хочу пройти по всем городам и дорогам, проходящим через Нью-Йорк, Чикаго и Сиэтл.ArangoDB GRAPH TRAVERSAL через определенные узлы

Это можно сделать с помощью функции TRAVERSAL AQL (используя filterVertices). Однако эта функция принимает только идентификатор, а не пример вершины, как в GRAPH_TRAVERSAL.

GRAPH_TRAVERSAL не имеет опции фильтра, поэтому мой вопрос заключается в способе фильтрации результатов с использованием операций графа?

ответ

1

Особенность на самом деле там, но была как-то не документирована. Я добавил его в нашу документацию, которая должна быть обновлена ​​в ближайшее время. Приносим извинения за неудобства.

filterVertices принимает список примеров вершин.

  • Примечание: вы также можете указать имя пользовательской функции AQL. с подписью function(config, vertex, path). Для более конкретной фильтрации.

vertexFilterMethod определяет, что должно быть сделано со всеми другими вершинами:

  • "prune" не будут следовать ребра, прикрепленные к этим вершинам. (Используется здесь)
  • "exclude" не будет включать эту конкретную вершину.
  • ["prune", "exclude"] оба вышеуказанных. (По умолчанию)

Пример запроса для вашего вопроса состоит в следующем (дыхательные пути мой график):

FOR x in GRAPH_TRAVERSAL("airway", "a/SFO", "outbound", {filterVertices: [{_key: "SFO"}, {_key: "NYC"}, {name: "Chicago"}, {name: "Seattle"}], vertexFilterMethod: "prune"}) RETURN x

Подсказка: Убедитесь, что вы включили начальную вершину в фильтре, а также. В противном случае он всегда будет возвращаться с пустым массивом (первая посещенная вершина непосредственно обрезается)

Смежные вопросы