【发布时间】:2018-09-06 13:30:35
【问题描述】:
我需要找到在总距离范围和总角度范围内的任何长度的路径,然后返回每个路径中的节点列表。此外,路径不应多次遍历两个节点之间的关系。是否可以通过单个密码查询来做到这一点?
【问题讨论】:
我需要找到在总距离范围和总角度范围内的任何长度的路径,然后返回每个路径中的节点列表。此外,路径不应多次遍历两个节点之间的关系。是否可以通过单个密码查询来做到这一点?
【问题讨论】:
这样的事情应该可以工作:
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])。
【讨论】: