Как и в случае с Cypher query to find nodes that are not related to other node by property, но все же достаточно, чтобы пнуть меня до сих пор.Запрос Cypher для поиска узлов с некоторыми отношениями, но не с другими
Лицо имеет право на задачи, если они отвечают требованиям языка и еще не имеет отношения к ней (например , делает или отвергнут).
Задачи могут зависеть друг от друга и «наследовать» их язык через 0 или более DEPENDS_ON
rels и «root» Task REQUIRES
.
Я пытаюсь создать запрос, который найдет & hellip;
p1
имеет право наt2
иt4
p2
имеет право на все 4p3
не имеет права на
даже не заботясь о t1
«S сделали-Несс еще, я не думайте, что я перехожу через наследство языка.
Например, для p2
:
MATCH (p:Person {name: 'p2'})-[:SPEAKS]->(lang) WITH p, collect(lang) AS langs MATCH (t:Task)-[:DEPENDS_ON*0]->(:Task)-[:REQUIRES]->(lang:Language) WHERE lang IN langs RETURN t
находит 0 строк
MATCH (p:Person {name: 'p2'})-[:SPEAKS]->(lang) RETURN lang
получает как Языки, так что я уверен, что collect(lang) as langs
то, что я хочу (очень?) ,
Снятие :DEPENDS_ON*
ссылки
MATCH (p:Person {name: 'p2'})-[:SPEAKS]->(lang) WITH p, collect(lang) AS langs MATCH (t:Task)-[:REQUIRES]->(lang:Language) WHERE lang in langs RETURN t
получает меня t1
, t2
и t3
.
Как я могу получить t4
?
TIA!
Хорошая точка - думаю, мне нужно больше мышления на графике! –