У меня есть база данных, в которой узлы и отношения создаются так:
create ({foo: 1})-[:r]->({foo: 1}), ({foo: 1})-[:r]->({foo: 2}), ({foo: 1})-[:r]->({foo: 2})
Для каждого пути я могу создавать списки свойств следующим образом:
MATCH path = (start)-[*]->(end)
WHERE NOT ()-->(start) and NOT (end)-->()
RETURN [node in nodes(path) | node.foo] as foos
, который возвращает
foos
------
[1, 1]
[1, 2]
[1, 2]
Но мне нужны только отдельные свойства в каждом списке.
Вдохновлен Cypher: извлечение уникальных значений из коллекции Я пытался
MATCH path = (start)-[*]->(end)
WHERE NOT ()-->(start) and NOT (end)-->()
WITH [node in nodes(path) | node.foo] as foos
UNWIND foos as x
RETURN COLLECT(DISTINCT x) as foos_unique
Но это дает мне уникальные свойства для всех узлов:
foos_unique
----
[1, 2]
Как извлечь отдельные элементы из каждого списка, так что результат будет
foos_unique
------
[1]
[1, 2]
[1, 2]