Neo4j用它的父属性列出所有节点

时间:2017-05-14 07:58:07

标签: neo4j cypher graph-databases

假设我在neo4j中有这个模型:

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

所有节点都有firstnamelastname属性。 是否有任何密码可以列出所有节点的父节点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" 
     }
  }
}

1 个答案:

答案 0 :(得分:1)

当然,你可以试试这个,假设这些都是: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