【问题标题】:Cypher Query: Get Line Details Matching a CriteriaCypher 查询:获取符合条件的行详细信息
【发布时间】:2018-09-06 13:30:35
【问题描述】:

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

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    这样的事情应该可以工作:

    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])。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-19
      • 1970-01-01
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多