我需要找到落在总距离范围和总角度范围内的任何长度的路径,然后返回每个路径中的节点列表。同样,路径不应多次遍历两个节点之间的关系。可以通过单个密码查询来做到这一点吗?
答案 0 :(得分:0)
类似的事情应该起作用:
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]
)。