Neo4j的列表与它的所有节点的父性

问题描述:

假设我有这个模型的Neo4j:Neo4j的列表与它的所有节点的父性

  (n2) -> (n3)-> (n9) 
      /\ 
      | 
    (n4)<-(n1)->(n5)->(n6) 
    |   | 
    \/   \/ 
    (n7)   (n8) 

所有节点都firstnamelastname性能。 是否有任何cypher列出所有节点与它的父母firstnamelastname。 事情是这样的:

{ 
    { 
    firstname: "n1 name", 
    lastname: "n1 last name" 
    parent: {} 
    }, 
    { 
    firstname: "n2 name", 
    lastname: "n2 last name" 
    parent: { 
     firstname: "n1 name", 
     lastname: "n1 last name" 
    } 
    }, 
    { 
    firstname: "n3 name", 
    lastname: "n3 last name" 
    parent: { 
     firstname: "n2 name", 
     lastname: "n2 last name" 
    } 
    }, 
    . 
    . 
    . 
    { 
    firstname: "n9 name", 
    lastname: "n9 last name" 
    parent: { 
     firstname: "n3 name", 
     lastname: "n3 last name" 
    } 
    } 
} 

当然,你可以试试这个,假设这些都是:N个节点。

MATCH (n:N) 
OPTIONAL MATCH (parent)-->(n) 
RETURN collect(n {.*, parent}) as nodes 

这使用地图投影每个n节点,以显示它的属性,以及父节点的属性(如果存在)。如果您只需要firstnamelastname属性,那么您可以在地图投影中明确列出它们,如下所示:

MATCH (n:N) 
OPTIONAL MATCH (parent)-->(n) 
RETURN collect(n {n.firstname, n.lastname, parent {parent.firstname, parent.lastname}}) as nodes