【发布时间】:2015-01-22 02:05:30
【问题描述】:
如果我有如下图(嵌套可以针对任意数量的节点进行):
(a)-[:KNOWS]->(b)-[:KNOWS]->(c)-[:KNOWS]->(d)-[:KNOWS]->(e)
| |
| (i)-[:KNOWS]->(j)
|
(f)-[:KNOWS]->(g)-[:KNOWS]->(h)-[:KNOWS]->(n)
|
(k)-[:KNOWS]->(l)-[:KNOWS]->(m)
如何检索所有全长路径(在这种情况下,从 (a)-->(m)、(a)-->(n)、(a)-->(j) 和 (a)-->(e)?查询还应该能够返回没有关系的节点给定类型。
到目前为止,我只是在做以下事情(我只想要 id 属性):
MATCH path=(a)-[:KNOWS*]->(b)
RETURN collect(extract(n in nodes(path) | n.id)) as paths
我需要这些路径,以便在编程语言(在本例中为 clojure)中我可以创建一个这样的嵌套映射:
{"a" {"b" {"f" {"g" {"k" {"l" {"m" nil}}
"h" {"n" nil}}}
"c" {"d" {"e" nil}
"i" {"j" nil}}}}}
是否可以直接使用查询生成地图?
【问题讨论】: