Cypher Query: получить детали строки, соответствующие критериям - PullRequest
0 голосов
/ 06 сентября 2018

Мне нужно найти пути любой длины, которые попадают в общий диапазон расстояний и общий диапазон углов, а затем вернуть список узлов в каждом пути. Кроме того, путь не должен пересекать отношения между двумя узлами более одного раза. Можно ли сделать это с помощью одного запроса на шифр?

Graph

1 Ответ

0 голосов
/ 06 сентября 2018

Примерно так должно работать:

MATCH p=(:Foo)-[:followedBy*]->(:Foo)
WHERE
  ($minAngle <= REDUCE(s=0, x IN NODES(p) | s + x.angle) <= $maxAngle) AND
  ($minDist <= REDUCE(t=0, y IN RELATIONSHIPS(p) | t + y.distance) <= $maxDist)
RETURN p;

Предположения:

  • Все соответствующие узлы имеют метку Foo.
  • Все соответствующие отношения имеют тип followedBy.
  • Когда вы делаете запрос, вы передаете параметры maxAngle, minAngle, maxDist и minDist.

Примечание: предложение MATCH автоматически отфильтровывает совпадения, в которых будут повторно использоваться одни и те же отношения, удовлетворяя ваш запрет на "более одного раза" обхода отношений.

Предупреждение: шаблоны переменной длины (включающие в себя *) могут вызвать ошибки нехватки памяти и / или занять очень много времени. Вы можете установить разумную верхнюю границу (например, [:followedBy*..6]).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...