12

我正在尝试检索链接到给定图形节点的一组唯一元素。我将一些节点加载到 Neo4j 图形数据库中,这些节点使用“TO”关系连接(例如节点 6 连接“TO”节点 7)。我已经能够使用以下方法检索我的起始节点和通过“TO”关系链接的其他节点之间的所有路径:

    start a = node(6)
    match p = (a)-[r:TO*..]->(b)
    return distinct EXTRACT(n in nodes(p): n);

这给了我不同的输出路径,但仍然有重复的节点值,例如:

    +-------------------------------------------------------+
    | p                                                     |
    +-------------------------------------------------------+
    | [Node[6]{},:TO[5] {},Node[7]{}]                       |
    | [Node[6]{},:TO[5] {},Node[7]{},:TO[9] {},Node[11]{}]  | 
    etc...

如何将这些路径组合成一个包含唯一路径值的列表? 我曾尝试使用 COLLECT 但这只会导致上述结果的嵌套版本:

    start a = node(6) 
    match p = (a)-[r:TO*..]->(b) 
    return collect(distinct p);

    [[Node[6]{},:TO[5] {},Node[7]{}],[Node[6]{},:TO[5] {},Node[7]{},:TO[9] {}, ... ]    
4

1 回答 1

23

我对你想要的结果感到困惑(如果这不正确,你能举个例子吗?)。你想要路径还是想要节点?如果你想要节点,那么也许你只想要:

start a = node(6)
match (a)-[:TO*]->(b)
return collect(distinct b);
于 2013-01-15T20:56:26.190 回答