py2neo通过从execute()记录访问节点来扩展图形

时间:2016-03-16 12:36:45

标签: neo4j cypher record py2neo

正如我从另一个问题中学到的那样,单独的Cypher显然不可能复制子图或复制节点链。但我需要以某种方式做到这一点。因此,我寻找一种更加黑客的做法。

具体来说,我需要转换看起来像这样的图:

(A)──>(N1:T1)──>(B)

进入看起来像这样的图表

(A)──>(N1:T1)──>(B)
 │               ^
 └───>(N2:T2)────┘

虽然AB之间的部分可以任意长。重要的是,T1类型的所有节点都会转换为原始路径的副本中的T2类型(示例中为N1的那个)。

所以,如果我有这个图:

MERGE (N1:A)-[:r]->(N2:B)-[:r]->(N3:C)
MERGE (N1)-[:r]->(N4:C)-[:r]->(N5:C)

和一个如下所示的查询:

MATCH p=(:A)-[*0..]->(:B)-[*0..]->(:C)
RETURN p

我用graph.cypher.execute(<query>)执行它,然后execute()返回的记录为:

   | p                         
---+----------------------------
 1 | (:A)-[:r]->(:B)-[:r]->(:C)

现在我想获取所有节点的ID。然后我可以使用Cypher代码生成一个字符串,该代码表示​​复制的路径并使用execute()再次执行。在该字符串中,我将使用记录中的节点ID连接到数据库中的现有节点。但我记得,通过ID从外部定位数据库中的节点也是不可能的......或者实际上它可能吗?还有其他方法可以解决这个问题吗?有人提到dump功能,但文档非常缺乏,我不太明白它应该如何工作。此外,我甚至不确定它是否能满足我的需求。

0 个答案:

没有答案