如何用Cypher将两个不同的图存储到一个?

时间:2018-09-29 16:38:32

标签: cypher cypher-3.1

对于以后与项目CAPS的特性,我需要将2个不同的图存储到一个中:

Graph3=Graph1+Graph2

我试图搜索解决方案,但发现UNION ALL,但最后一个没有按我预期的那样工作。还有使用Cypher的另一种方法吗?

示例:

val Graph1=session.cypher("""
                            | FROM GRAPH mergeGraph
                            | MATCH (from)-[via]->(to)
                            |WHERE substring(from.geohash,0,5)=substring(to.geohash,0,5)
                            | CONSTRUCT
                            |  CREATE (h1:HashNode{geohash:substring(from.geohash,0,5)})-[COPY OF via]->(h1)
                            | RETURN GRAPH
                             """.stripMargin).graph

包含此模式:

enter image description here

val Graph2=session.cypher("""
                            | FROM GRAPH mergeGraph
                            | MATCH (from)-[via]->(to)
                            |WHERE substring(from.geohash,0,5)<>substring(to.geohash,0,5)
                            | CONSTRUCT
                            |  CREATE (:HashNode{geohash:substring(from.geohash,0,5)})-[COPY OF via]->(:HashNode{geohash:substring(to.geohash,0,5)})
                            | RETURN GRAPH
                             """.stripMargin).graph

包含此模式:

enter image description here

使用Union All:

Graph3=Graph1.unionAll(Graph2) 

我得到这张图:

enter image description here

如您所见,绿色节点是Graph2的没有关系的节点!那就是我没想到的。

0 个答案:

没有答案