Я новичок в Neo4j и прохожу учебное пособие по их знакомству, и меня немного смущает использование предложения «ГДЕ НЕ существует».В учебном пособии показан пример, в котором они хотят вернуть все узлы Person людей, которые написали фильмы, и исключить людей, которые снимали этот фильм.Их запрос для этого:
MATCH (p:Person)-[:WROTE]->(m:Movie)
WHERE NOT exists( (p)-[:DIRECTED]->() )
RETURN p.name, m.title
, который возвращает:
p.name m.title
"Aaron Sorkin" "A Few Good Men"
"Jim Cash" "Top Gun"
"David Mitchell" "Cloud Atlas"
Мой запрос для этого:
MATCH (p:Person)-[:WROTE]->(m:Movie)
WHERE NOT exists( (p)-[:DIRECTED]->(m) )
RETURN p.name, m.title
, который возвращает:
p.name m.title
"Aaron Sorkin" "A Few Good Men"
"Jim Cash" "Top Gun"
"Nora Ephron" "When Harry Met Sally"
"David Mitchell" "Cloud Atlas"
"Lana Wachowski" "V for Vendetta"
"Lilly Wachowski" "V for Vendetta"
Я проверил отношения графа для «Нора Эфрон», «Лана Вачовски» и «Лилли Вачовски» (которыйне в результате их запроса) и обнаружили, что они написали и произвели фильмы (но не режиссер).Насколько я понимаю, оба запроса должны возвращать один и тот же результат.Мне интересно, почему они дают разные результаты.Любая помощь будет благодарна за объяснение различий.