Ваш текущий запрос соответствует путям, состоящим из одного: процедуры, одного: больницы и одного: города в каждом пути, что объясняет, почему вы получаете результаты, которые видите.Подход WHERE all()
не будет работать для этого, потому что вы запускаете его для каждого пути, поэтому он проверяет, что p
, h
и g
не имеют процедуры онкологии, и я довольноуверен, что вы имели в виду, что он применяется только ко всем процедурам в каждой больнице.
Лучший способ добиться этого - использовать больницы, в которых нет процедуры онкологии, подобной этой:
MATCH (h:Hospital)
WHERE NOT (:Procedure{Procedure_Name:'ONCOLOGY'})-[:DONE_AT]->(h)
MATCH (h)-->(g:Cities)
RETURN h, g
Если вы ищете только города без больницы, где проводилось лечение онкологии, вы можете использовать это:
MATCH (g:Cities)
WHERE NOT (:Procedure{Procedure_Name:'ONCOLOGY'})-[:DONE_AT]->(:Hospital)-->(g)
RETURN g