【问题标题】:Create a recursive join graph on neo4j在 neo4j 上创建递归连接图
【发布时间】:2015-11-22 00:27:24
【问题描述】:

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

Prod  Parent  
  A      A1  
 A1      B1  
  B      A1  
 B1       C 

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

【问题讨论】:

标签: neo4j graph-databases


【解决方案1】:

数据模型

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

创建图表

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

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

您可以使用LOAD CSV 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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-30
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    相关资源
    最近更新 更多