【问题标题】:How retrieve all nodes linked by a relationship如何检索由关系链接的所有节点
【发布时间】:2012-07-25 12:23:40
【问题描述】:

我正在使用 neo4j,我有两个属性的节点:名称和 ID。我有一个关于 id 的索引。 我与属性“CALL”有关系:“by_test”。这个属性可以取不同的值(任何节点的id)。

两个节点可以有多个 CALL 关系,具有不同的 by_test 属性值。

假设我有 1..N 个节点由相同的 CALL.by_test 属性值链接。

Node1 -> Node2 -> Node3 -> .. -> 节点 N

  • 如何获得所有这些节点?

    1. 我需要在关系上放置索引吗?

    2. 我必须创建动态关系吗?代替 CALL.by_test=value,使用 value 有关系。

谢谢!

【问题讨论】:

    标签: neo4j


    【解决方案1】:

    使用 Cypher,您可以像这样查询该列表:

    START n=node:node_auto_index(name="one") 
    MATCH p=(n)-[r:CALL*1..]->(m)
    WHERE ALL(x in r WHERE x.by_test = 3)
    RETURN n,m
    

    MATCH 中,您将术语r 绑定到CALL 关系,然后在WHERE 子句中使用它来检查每个关系的by_test 属性。

    正如 Michael Hunger 所说,r 是关系的集合,因此 WHERE 需要使用 ALL 来检查每个关系。

    【讨论】:

    • 您使用的是哪个版本的 Neo4j?语法有点变化。
    • as r 在这种情况下(可变长度路径)代表您必须使用的 1..n 关系:WHERE ALL(x in r : x.by_test=3)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多