шифр не возвращает запрошенные узлы - PullRequest
0 голосов
/ 10 марта 2020

У меня есть следующий запрос шифра:

merge (s:Location {locationID: '72252'}) 
merge (t:Location {locationID: '99999'}) 
merge (s)-[:IS_NEXT_TO]-(t) 
with s,t optional match (n:Station)-[:IS_IDENTIFIED_BY]-(s) 
with s,t,n where n is not null optional match (a:Station)-[:IS_IDENTIFIED_BY]-(t) 
with s,t,n,a  where a is not null merge (a)-[:IS_NEXT_TO]-(n) 
return s,t,n,a

Если необязательные совпадения находят станции, тогда четыре узла успешно возвращаются.

Если, однако, хотя бы один из необязательные совпадения возвращают ноль, они не являются.

Итак, я попробовал следующее:

merge (s:Location {locationID: '72252'}) 
merge (t:Location {locationID: '99999'}) 
merge (s)-[:IS_NEXT_TO]-(t) 
with s,t optional match (n:Station)-[:IS_IDENTIFIED_BY]-(s) 
optional match (a:Station)-[:IS_IDENTIFIED_BY]-(t) 
with s,t,n,a, 
    { fromLocation: s.locationID, toLocation: s.locationID, 
      fromStation: CASE WHEN n is not null then n.crs else 'no station' end, 
      toStation: case when a is not null then a.crs else 'no station' end
    } as details 
where a is not null and n is not null merge (a)-[:IS_NEXT_TO]-(n) 
return details

В обоих случаях, когда необязательное совпадение возвращает ноль, браузер Neo4j просто говорит Added 1 label, created 1 node, set 1 property, created 1 relationship, completed after 4 ms. вместо того, чтобы показывать мне узлы. Так что он выполняет работу, просто не показывая мне результаты.

Я предполагаю, что проблема в том, что предложение where отфильтровывает мой возвращаемый объект, но я не знаю, как обойти это?

...