Я пытаюсь выполнить обход графа здесь
Я создал две коллекции в ArangoDB: коллекцию документов "Node"
и коллекцию краев "Path"
. Все мои узлы имеют атрибут name
(метки) и соединены ребрами (линиями), как показано на рисунке выше.
Я попытался найти пути, заканчивающиеся узлом end или error:
FOR v, e, p IN 1..10 OUTBOUND 'Node/start_0' Path
OPTIONS { bfs: true}
FILTER (v.name == "end" OR v.name == "error")
RETURN CONCAT_SEPARATOR(' - ', p.vertices[*].name)
Вышеупомянутый запрос работает так, как ожидалось, и возвращает мне два пути:
["start - decide - execute1 - error"
"start - decide - execute2 - end"]
Но я изучаю, как исключить все соответствующие пути, проходящие через конкретный узел. Например, я хочу удалить все пути, проходящие через execute1. Я пробовал этот запрос:
FOR v, e, p IN 1..10 OUTBOUND 'Node/start_0' Path
OPTIONS { bfs: true}
FILTER ((v.name == "end" OR v.name == "error") AND v.name != "execute1")
RETURN CONCAT_SEPARATOR(' - ', p.vertices[*].name)
Но это не работает - он все равно возвращает мне два пути.
Может ли кто-нибудь помочь мне переосмыслить этот запрос, чтобы он возвращал только один путь, то есть «начало - решение - выполнение2 - конец»?