在neo4j上创建一个递归连接图

时间:2015-11-17 23:08:01

标签: neo4j graph-databases

我有一个包含两个字段的表:产品和父产品 数据类似于

Prod  Parent  
  A      A1  
 A1      B1  
  B      A1  
 B1       C 

如何创建一个图表,我将产品绑定到其父级,以便我可以查询所有级别?例如,如果我在A上查询,我需要知道它的父级A1,祖父级B1和更高级别的C级。我需要能够遍历任何方式,但是如何创建节点和关系以进行递归查看。 / p>

1 个答案:

答案 0 :(得分:1)

数据模型

根据您的描述和示例数据,您的图表如下所示:

property graph model

创建图表

给定一个包含以下内容的CSV文件:

"Prod","Parent"
"A","A1"
"A1","B1"
"B","A1"
"B1","C"

您可以使用LOAD CSV Cypher声明在

LOAD CSV WITH HEADERS FROM 'file:///path/to/file.csv' AS row
MERGE (prod:Product {name: row.Prod})
MERGE (parent:Product {name: row.Parent)
CREATE UNIQUE (parent)-[:IS_PARENT_OF]->(prod)

查询图表

找到产品A1的父母:

MATCH (p:Product {name: "A1"})<-[:IS_PARENT_OF]-(parent:Product)
RETURN parent

找到A1的所有祖先(任意深度):

MATCH (p:Product {name: "A1"})<-[:IS_PARENT_OF*1..15]-(a:Product)
RETURN a