сбор узлов разной длины пути с использованием шифра в neo4j - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь собрать различную длину пути узлов вместе с целью присвоения переменной на основе длины пути. Узел не на пути = отсоединен, длина пути 1 = полу, длина пути> 1 = террасный.

У меня есть следующий шифр, но при возврате собранных списков ничего не возвращается, хотя каждая часть отлично работает при включении.

match (a:Test) where not (a)-[]-() with a, COLLECT(DISTINCT a) as detached  
match (a:Test)-[r]-() with a,detached,count(r) as rels where rels = 1 
match path = (a)-[]->() with detached, COLLECT(DISTINCT NODES(path)) AS semis 
match path = (a)-[:NEIGHBOURING_BUILDING*]-() where length(path) > 1 with detached, semis, COLLECT(DISTINCT NODES(path)) AS terraces 
return detached, semis, terraces

Я сейчас использую эту тестовую сеть

create (:Test{id:1}) 
create (:Test{id:2})
create (:Test{id:3})-[:NEIGHBOUR]->(:Test{id:4}) 
create (:Test{id:5})-[:NEIGHBOUR]->(:Test{id:6})<-[:NEIGHBOUR]-(:Test{id:7})
create (:Test{id:8})-[:NEIGHBOUR]->(:Test{id:9})
create (:Test{id:10})-[:NEIGHBOUR]->(:Test{id:11})<-[:NEIGHBOUR]-(:Test{id:12})

Как я могу собрать узлы с каждым типом пути в список?

1 Ответ

0 голосов
/ 07 сентября 2018

В вашем запросе есть что-то странное:

match (a:Test) where not (a)-[]-() with a, COLLECT(DISTINCT a) as detached  
match (a:Test)-[r]-() with a,detached,count(r) as rels where rels = 1 

В первой строке вы ищете узел a, который не имеет каких-либо отношений (not (a)-[]-()), а затем во второй строке вы хотите отношения этого же узла: (a:Test)-[r]-().

Так что это нормально, что у вас нет результата ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...