Подтвердить что ты не робот

Возвращать уникальные узлы в запросе пути Cypher

Я пытаюсь получить уникальный набор элементов, связанных с данным графом node. У меня есть некоторые узлы, загруженные в базу данных диаграммы Neo4j, которые связаны с использованием отношения "TO" (например, node 6 соединяет "TO" node 7). Я смог получить все пути между моим стартом node и другими, связанными отношениями "TO" , используя:

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

Это дает мне выходные пути, которые различны, но все еще имеют повторяющиеся значения node, например:

    +-------------------------------------------------------+
    | 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] {}, ... ]    
4b9b3361

Ответ 1

Я смущен точно о том, какой результат вы хотите (можете ли вы привести пример, если это не так?). Вы хотите пути или хотите узлы? Если вам нужны узлы, возможно, вам просто нужно:

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