【问题标题】:Can we match subgraphs in cypher?我们可以匹配密码中的子图吗?
【发布时间】:2021-07-15 11:00:09
【问题描述】:

我知道在密码中可以匹配这样的路径:

MATCH p=(n)-[r]-(m)
RETURN p

但是有没有办法做类似的事情,但对于子图,即不能以路径形式表达的节点和关系组?

我有这样的想法:

MATCH subgraph=[(n)-[r]-(m)-[s]-(p), (m)-[j]-(u)]
RETURN subgraph

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    也许APOC path expander 程序可以满足您的需求。您可以很好地控制图表的遍历方式。

    但是,您不会像您想象的那样将子图放入一个变量中:

    CALL apoc.path.expandConfig(n, { ... }) YIELD path 将返回多行(每个找到的路径一行)。

    CALL apoc.path.subgraphAll(n, { ... }) YIELD nodes, relationships 将返回所有找到的节点和关系的列表。

    【讨论】:

      【解决方案2】:
      MATCH path1=(n)-[r]-(m)-[s]-(p),
            path2=(m)-[j]-(u)
      RETURN apoc.coll.toSet(nodes(path1),nodes(path2)) AS subGraphNodes,
             apoc.coll.toSet(rels(path1),rels(path2)) AS subGraphRelationships
      

      将为每个匹配的子图返回不同的节点和 rel。

      如果只需要虚拟子图,可以使用

      apoc.graph.fromPaths()
      

      【讨论】:

        猜你喜欢
        • 2012-01-03
        • 2016-09-21
        • 1970-01-01
        • 2015-03-24
        • 1970-01-01
        • 1970-01-01
        • 2011-06-13
        • 2012-02-23
        • 2021-05-08
        相关资源
        最近更新 更多