Neo4J / Cypher:路径模式的长度可变

时间:2017-07-15 09:22:38

标签: neo4j cypher traversal hierarchical-data genealogy

我在受GEDCOM文件启发的Neo4J图表中模拟了一个家谱。

我的节点和关系是:

Individual <-[CHILD]- Family
Family -[HUSBAND]-> Individual
Family -[WIFE]-> Individual

我不会将家庭建模为关系因为我可以附加多个事件(订婚,婚姻,废除,离婚......):

Family -[OCCUR]-> FamilyEvent{type,subtype,date,place,note}

我可以通过这个密码查询得到一个人的父亲和母亲:

MATCH (i:Individual {nickname:'Louis XVI'})
        <-[r:CHILD]-
    (m:Family)
        -[r2:HUSBAND|WIFE]->
    (h:Individual) 
    return i,r,m,r2,h

或者一个人的孩子:

MATCH (i:Individual {nickname:'le Pieux ou le Débonnaire'})
        <-[r:HUSBAND]-
    (m:Family)
        -[r2:CHILD]->
    (h:Individual) 
    return i,r,m,r2,h

但我怎样才能得到一个人的所有后代或后代呢? (换句话说,我如何重复个体之间的模式或将相同的模式应用于每个级别的个体?)

1 个答案:

答案 0 :(得分:0)

您可以使用此查询

match (n:individual{id:###})<-[:child*..9]-(n) return n,m

创建祖先树或指向后方的箭头。