【问题标题】:Neo4J cypher query to get nodes connected by paths with the same generic attributeNeo4J 密码查询以获取通过具有相同通用属性的路径连接的节点
【发布时间】:2016-06-29 09:26:43
【问题描述】:

我正在尝试创建一个密码查询,它返回由给定范围的跃点(即 1..5)连接的节点,其中这些跃点之间的所有关系共享相同的属性值,而不指定此属性。

所以我想做类似的事情

MATCH (a {type: 'cin1'})-[rels:Next*1.. {value: 1}]->(b {type: 'cancer'}) 
RETURN (a), (b)

但没有指定边上的值应该为 1,它们只需要在跳跃过程中的所有边之间相等即可。

【问题讨论】:

    标签: neo4j cypher graph-databases


    【解决方案1】:

    我会为您的路径添加一个上限。或使用(全部)最短路径

    还要确保通过索引标签 + 属性组合查找 ab

    然后您可以对形成路径的关系集合使用谓词。

    MATCH (a:Label {type: 'cin1'})
    MATCH (b:Label {type: 'cancer'})
    MATCH shortestPath((a)-[rels:Next*1..20]->(b))
    WHERE ALL(r in tail(rels) WHERE (head(rels)).value = r.value)
    RETURN (a), (b)
    

    【讨论】:

    • 不知这样的表现是否合理。在我看来,在另一种方式中,您仅在值与指定的值匹配时才跳转,而通过这种方式,您可以进行所有可能的跳转并过滤它们,对吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 2014-01-09
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    • 2017-06-14
    相关资源
    最近更新 更多