Tree 按层次结构返回嵌套数据的Cypher查询

Tree 按层次结构返回嵌套数据的Cypher查询,tree,neo4j,cypher,Tree,Neo4j,Cypher,不是每个点都有一个容器,也没有循环。Atm一个点只能由另一个点包含。所以我们基本上是在谈论树木 现在,我想使用Neo4j检索数据并分层返回(通过容器): 查询不应使用固定深度 Atm我只有这个,我真的不确定我的选择是什么关于迭代一条路径 [ {"id": 1, "containees": [ {"id": 3}, {"id": 4, "containees": [ {"id": 6}, ]}, ]},

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

现在,我想使用Neo4j检索数据并分层返回(通过容器):

查询不应使用固定深度

Atm我只有这个,我真的不确定我的选择是什么关于迭代一条路径

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

我很确定这在Cypher上是不可能的(如果我错了,请有人纠正我)。Cypher擅长获取子图匹配并将其转换为表,但它不进行递归类型查询

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

[
    {"id": 1, "containees": [
        {"id": 3},
        {"id": 4, "containees": [
            {"id": 6},
        ]},
    ]},
    {"id": 2, "containees": [
        {"id": 5}
    ]}
]
MATCH (d:Dot)
OPTIONAL MATCH p = d-[:CONTAINS*]->(d2:Dot)
RETURN d.id