在neo4j上创建递归连接图

在neo4j上创建递归连接图,neo4j,graph-databases,Neo4j,Graph Databases,我有一个包含两个字段的表:产品和父产品。 数据与此相似 Prod Parent A A1 A1 B1 B A1 B1 C 如何创建一个图形,将产品绑定到其父级,以便查询所有级别?例如,如果我查询A,我需要知道它的父A1、祖父母B1和更高级别的C。我需要能够以任何方式遍历,但如何创建节点和关系以进行递归查找。数据模型 根据您的描述和示例数据,您的图形如下所示: 创建图表 给定包含以下内容的CSV文件: "Prod","P

我有一个包含两个字段的表:产品和父产品。
数据与此相似

Prod  Parent  
  A      A1  
 A1      B1  
  B      A1  
 B1       C 

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

数据模型

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

创建图表

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

"Prod","Parent"
"A","A1"
"A1","B1"
"B","A1"
"B1","C"
您可以使用Cypher语句在Neo4j中创建此图:

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
MATCH(p:Product{name:“A1”})看看:
MATCH (p:Product {name: "A1"})<-[:IS_PARENT_OF*1..15]-(a:Product)
RETURN a