РЕДАКТИРОВАТЬ:
Спасибо за разъяснения.
Мы можем получить эквивалент того, что вы хотите, захват шаблона пути с использованием имеющихся меток:
MATCH path = (start)-[*]->(end)
WHERE NOT ()-->(start) and NOT (end)-->()
RETURN [node in nodes(path) | labels(node)[0]] as structure, count(path) as n
Это даст вам список меток узлов (первый ярлык присутствует для каждого ... помните, что узлы могут быть многокомпонентными, что может отбрасывать ваши результаты).
Что касается получения именно этого формата в вашем примере, это совсем другое. Мы могли бы сделать это с некоторыми текстовыми функциями в процедурах APOC , в частности apoc.text.join()
.
. Нам нужно было бы сначала добавить форматирование вокруг извлечения первой метки, чтобы добавить префикс :
а также скобки. Тогда мы могли бы использовать apoc.text.join()
, чтобы получить строку, в которой узлы соединены желаемым символом '->':
MATCH path = (start)-[*]->(end)
WHERE NOT ()-->(start) and NOT (end)-->()
WITH [node in nodes(path) | labels(node)[0]] as structure, count(path) as n
RETURN apoc.text.join([label in structure | '(:' + label + ')'], '->') as structure, n