Cypher 查询 return 分层嵌套数据
Cypher query to return nested data hierarchically
(:Dot)-[:CONTAINS]->(:Dot)
不是每个点都有容器,也没有循环。 Atm 一个点只能被另一个点包含。所以我们基本上是在谈论树
现在我想使用 Neo4j 检索数据并 return 分层(按容器):
[
{"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
我很确定目前 Cypher 无法做到这一点(如果我错了,请有人纠正我)。 Cypher 擅长进行子图匹配并将它们转换为表,但它不进行递归类型的查询。
对于这类事情,我认为您需要直接使用 Java API。通过使用您选择的语言与 Java 交互,或者通过创建 unmanaged extension 来让 Neo4j return 为您提供 JSON 中的数据(或您喜欢的任何格式) )
(:Dot)-[:CONTAINS]->(:Dot)
不是每个点都有容器,也没有循环。 Atm 一个点只能被另一个点包含。所以我们基本上是在谈论树
现在我想使用 Neo4j 检索数据并 return 分层(按容器):
[
{"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
我很确定目前 Cypher 无法做到这一点(如果我错了,请有人纠正我)。 Cypher 擅长进行子图匹配并将它们转换为表,但它不进行递归类型的查询。
对于这类事情,我认为您需要直接使用 Java API。通过使用您选择的语言与 Java 交互,或者通过创建 unmanaged extension 来让 Neo4j return 为您提供 JSON 中的数据(或您喜欢的任何格式) )