繁体   English   中英

如何使用Cypher在Neo4j中复制子图

[英]How to Copy Sub-Graph in Neo4j using Cypher

我正在尝试使用Neo4j,Cypher和Python(Py2Neo)模拟文件系统。

我已经创建了数据模型,如以下屏幕截图所示。

Type = 0表示文件夹,type = 1表示文件。

在此处输入图片说明

我正在实现文件/文件夹的复制,移动等功能。

移动功能看起来很简单,我可以创建一个新的关系并删除旧的关系。 但是复制文件/文件夹需要复制子图。

如何复制子图?

我正在创建一个python模块,因此尝试避免apoc。

即使您试图避免使用APOC,它也已经在最新版本中实现了此功能: apoc.refactor.cloneSubgraph()

对于非APOC方法,您需要完成以下任务:

  1. MATCH到组成要克隆的子图的不同节点和关系。 每个都有一个单独的列表将使其更容易处理。

  2. 克隆节点,并获得一种从原始节点映射到克隆节点的方法。

  3. 处理关系,找到起点和终点,并遵循到克隆节点的映射,然后使用克隆节点为关系的起点和终点创建相同的关系类型,然后从原始关系复制属性。 这样,您与原始文档就没有任何关系,只有克隆。

  4. 确定要重新锚定的节点(您可能不想克隆原始节点),并确定与该节点之间的任何关系,请通过步骤3将其创建到要用作新锚点的节点(通过步骤3) (例如,新的:File应该是克隆的目录树的父级)。

所有这些都很难在Cypher中完成(特别是第3步和第4步),因此所有这些原因都封装在apoc.refactor.cloneSubgraph()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM