在Neo4j中获得多层次关系

时间:2017-02-01 13:37:31

标签: graph neo4j tree cypher

这里SuperUser创建了Sunil。 Sunil创造了ravi ...... Divya创造了Ramya。

My DB values

当我这样查询时

match (a:Login{Type:"SuperUser"})<-[:createdBy*0..5]-(m) return *

我得到了与图片相同的响应。但是从JSON我无法弄清楚谁是由谁创造的。我需要像

这样的回复
{"n":{"id":"SuperUser","created":[{"id":"sunil","created":[{"id":"ravi","created":[{"id":"Prem"},{"id":"Divya","created":[{"id":"Ramya"}]}]}]}]}}

这样我才能知道谁是由谁创造的。感谢

1 个答案:

答案 0 :(得分:1)

您需要在return子句中明确指定该信息。使用此查询。

MATCH (a:Login{Type:"SuperUser"})<-[:createdBy*0..5]-(m)
WITH collect(m) as source
WITH source, range(0, size(source)) AS index
UNWIND index as i
WITH source[i] as m
MATCH (m:Login)-[:createdBy]->(n:Login) RETURN m.Name as user, n.Name as CreatedBy

您也可以使用 ORDER BY 子句对数据进行分组。