Cypher查询以分层次返回嵌套数据

时间:2015-04-06 10:55:47

标签: tree neo4j cypher

(:Dot)-[:CONTAINS]->(:Dot)

并非每个点都有容器,也没有循环。 Atm一个点只能被另一个点包含。所以我们基本上是在谈论树木

现在我想使用Neo4j检索数据并按层次(按容器)返回:

[
    {"id": 1, "containees": [
        {"id": 3},
        {"id": 4, "containees": [
            {"id": 6},
        ]},
    ]},
    {"id": 2, "containees": [
        {"id": 5}
    ]}
]

查询不应使用固定深度。

Atm我只有这个,而且我真的不确定我在迭代路径方面的选择是什么。

MATCH (d:Dot)
OPTIONAL MATCH p = d-[:CONTAINS*]->(d2:Dot)
RETURN d.id

1 个答案:

答案 0 :(得分:2)

我很确定目前Cypher不可能(如果我错了,有人请纠正我)。 Cypher善于利用子图匹配并将其转换为表格,但它不进行递归类型的查询。

对于这类事情,我认为您需要直接使用Java API。通过使用您选择的语言与Java连接,或者通过创建unmanaged extension让Neo4j以JSON(或您喜欢的任何格式)为您返回数据