【问题标题】:How to find the shortest path with multiple nodes and multiple relationships in Neo4jNeo4j中如何找到具有多个节点和多个关系的最短路径
【发布时间】:2019-08-15 13:09:16
【问题描述】:

我不是 Cypher 方面的专家,但我在一个项目中拥有多个具有以下属性的节点:

['COGAB11', 'COGAB7', 'COGAB30', 'COGAB32', 'COGAB94', 'COGAB70',
'COGAB01', 'COGAB04', 'COGAB91', 'COG1AB77', 'COGAB46', 'COGAB40',
'COGAB31', 'COGAB14']

它们之间有几种关系:

[rel:coexpression|cooccurence|database|experimental|
fusion|neighborhood|score|textmining]

它也有一个像score这样的属性,它是一个0-1000的整数值,我想找到所有这些节点之间的最短路径,并获得它们之间得分大于等于500的关系.因此,我想返回带有这些关系和路径的图表。但是,我只找到了最短路径的查询,但在两个节点之间而不是在多个节点和多个关系之间。此外,我不确定是否应该为此使用 APOC。

MATCH (start:Loc{name:'A'}), (end:Loc{name:'F'})
CALL algo.shortestPath.stream(start, end, 'cost')
YIELD nodeId, cost
RETURN algo.asNode(nodeId).name AS name, cost

【问题讨论】:

    标签: neo4j path cypher


    【解决方案1】:

    如果您的意思是希望每个关系都有一个score >= 500,那么这应该返回最短路径:

    MATCH (start:Loc {name: 'A'}), (end:Loc {name: 'F'}),
      p = SHORTESTPATH((start)-[:coexpression|cooccurence|database|experimental|fusion|neighborhood|score|textmining]-(end))
    WHERE ALL(r IN RELATIONSHIPS(p) WHERE r.score >= 500)
    RETURN p
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-08
      • 1970-01-01
      • 2014-05-24
      • 1970-01-01
      • 1970-01-01
      • 2017-08-20
      • 2014-08-27
      • 1970-01-01
      相关资源
      最近更新 更多