在Neo4J中克隆树枝

时间:2014-09-20 16:15:14

标签: neo4j cypher

我在NEO4J 2.1中有一个格式良好的分层树,我正在尝试使用Cypher复制/克隆树中另一个节点下的分支。使用单个查询是否支持此功能?

    a
   / \
  b   c
 /     \
d       e

会变成

    a
   / \
  b   c
 /   / \
d   d2  e

克隆" b"在" c"科。请注意,我不想保持" b"之间的关系。和" d2" ...

我已经看到了#" dump"命令,但这不符合我的需要,因为我需要在PHP中完成它。

谢谢!

1 个答案:

答案 0 :(得分:0)

这对Cypher来说是不可能的。

我现在为PHP看到了两个解决方案:

1。使用导出文件

使用PHP,您可以执行shell命令,因此您可以放置​​dump + cypher查询以匹配文件中所需的子树,并使用嵌入式shell命令加载它

neo4j-shell -file export.cql>的Result.txt

在result.txt中,这将是dump shell命令的结果,因此返回cypher create语句,解析文件并执行cypher查询事务。

<强> 2。使用图表结果数据内容

使用事务性密码http端点,您可以以图形格式请求您的密码匹配查询,这将返回您的节点和关系,您可以轻松地重新创建自己的cypher create语句以将子树附加到另一个节点。 我创建了一个快速证明示例,用于完成Gist中的工作:https://gist.github.com/ikwattro/eb7190f3f142ed591e0e

对于我的POV,第二种解决方案要好得多,因为在将数据重新注入数据库之前,您可以更灵活地修改节点,例如,如果您使用自定义ID策略。

http://docs.neo4j.org/chunked/stable/rest-api-transactional.html#rest-api-return-results-in-graph-format

克里斯 https://github.com/neoxygen