Как я могу использовать ГДЕ в EXISTS () в Cypher - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь найти все пути в графе между двумя узлами, при условии, что любой узел в этом пути должен быть подключен к другому узлу с меткой TIMESWITCH и действительными endDate и startDate.

ЦельУзлы TIMESWITCH должны указывать, что подключенный узел может использоваться только для определенных диапазонов времени.

Поэтому я использовал этот запрос Cypher:

MATCH  p=(:MYNODE {myid:'node1'}) -[*]- (:MYNODE {myid:'node2'}) 
WHERE  ALL(n in nodes(p) WHERE EXISTS(
           (n)<--(ts:TIMESWITCH) 
           WHERE ts.startDate < datetime("2018-10-01T00:00:00") <= ts.endDate ))
RETURN p

Но этот запрос неверен, потому что ГДЕпункт запрещен внутри СУЩЕСТВ.Это просто означает, что внутри существует, можно проверить равенство, но не неравенство.

Так что я не знаю, что делать ... как я должен написать, что существует?

1 Ответ

0 голосов
/ 22 октября 2018

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

MATCH  p=(:MYNODE {myid:'node1'}) -[*]- (:MYNODE {myid:'node2'}) 
WHERE  ALL(n in nodes(p) WHERE size([(n)<--(ts:TIMESWITCH) 
   WHERE ts.startDate < datetime("2018-10-01T00:00:00") <= ts.endDate | ts]) > 0)
RETURN p
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...