密码查询:获取符合条件的行详细信息

时间:2018-09-06 13:30:36

标签: neo4j cypher

我需要找到落在总距离范围和总角度范围内的任何长度的路径,然后返回每个路径中的节点列表。同样,路径不应多次遍历两个节点之间的关系。可以通过单个密码查询来做到这一点吗?

Graph

1 个答案:

答案 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类型。
  • 进行查询时,将传递参数maxAngleminAnglemaxDistminDist

注意:MATCH子句将自动过滤出可重复使用相同关系的匹配项,从而满足您对“不止一次”关系遍历的禁止。

注意:可变长度的模式(在关系中涉及*)可能会导致内存不足错误和/或花费很长时间才能完成。您可能需要设置一个合理的上限(例如[:followedBy*..6])。