Raj*_*dam 4 neo4j cypher py2neo
我正在尝试使用 Neo4j、Cypher 和 Python(Py2Neo) 模拟文件系统。
我已经创建了数据模型,如下面的屏幕截图所示。
type=0 表示文件夹,type=1 表示文件。
我正在为文件/文件夹实现复制、移动等功能。
移动功能看起来很简单,我可以创建一个新关系并删除旧关系。但复制文件/文件夹需要复制子图。
如何复制子图?
我正在创建一个 python 模块,因此试图避免 apoc.
尽管您试图避免使用 APOC,但它已经在最新版本中实现了此功能:apoc.refactor.cloneSubgraph()
对于非 APOC 方法,您需要完成以下任务:
匹配到构成要克隆的子图的不同节点和关系。为每个项目制定一个单独的列表将使处理更容易。
克隆节点,并获得从原始节点映射到克隆节点的方法。
处理关系,查找开始和结束节点,并遵循到克隆节点的映射,然后使用克隆节点为关系的开始和结束节点创建相同的关系类型,然后从原始关系复制属性。这样,您与原件就没有任何关系,而只与克隆有任何关系。
确定要重新锚定哪些节点(您可能不想克隆原始节点),对于往返于该节点的任何关系,将其创建(通过步骤 3)到要用作新锚点的节点(例如,新的 :File 应该是克隆目录树的父级)。
所有这些在 Cypher 中都很难做到(特别是步骤 3 和 4),因此所有这些都被封装在apoc.refactor.cloneSubgraph()
.
归档时间: |
|
查看次数: |
1355 次 |
最近记录: |