Несколько операторов совпадения в Cypher Query - PullRequest
0 голосов
/ 25 июня 2019

Я изо всех сил пытаюсь обнаружить различные образцы в базе данных графа.На данный момент я хотел бы объединить различные операторы MATCH в одном запросе.У меня есть тестовый набор данных, в котором, помимо прочего, записывается Церковь, в которой люди вступали в брак.Возможно (мы говорим здесь о ранней современной Голландской Республике), что пара поженилась в католической церкви и в голландской реформатской церкви.Поэтому я хочу создать запрос, который извлекает имена этих людей.

Немного упрощенный, строительные блоки графиков состоят из трех типов узлов: человек, событие, церковь.У узла событий есть еще один ярлык «брак», тогда как у церковного узла есть еще один ярлык «Римско-католическая церковь» или «Голландская реформатская церковь».Так, например: брак Джона Доу в католической церкви существует в такой форме:

(p:Person {name: "John Doe"})-[:MARRIED_AT]->(event:marriage)-[:TOOK_PLACE_IN]->(church:Roman_Catholic_Church)

У некоторых узлов человека есть различные браки с различными Церквами, связанными с ними.Как найти пары, которые вступили в брак в католической церкви и голландской реформатской церкви?Я создал этот запрос, но, хотя он должен давать результаты, он не дает:

Match (p:person)-[:MARRIED_AT]->(event)-[:TOOK_PLACE_IN]->(ch:church:Roman_Catholic_Church), (p:person)-[:MARRIED_AT]->(event)-[:TOOK_PLACE_IN]->(ch:church:Reformed_Church) Return p.name

Я не получаю никаких сообщений об ошибках, но запрос не дает никаких результатов (хотя я проверилчто мой набор данных включает людей, чей брак состоялся в двух Церквах).Есть идеи, что я тут не так делаю?

1 Ответ

0 голосов
/ 25 июня 2019

вы используете переменную повторно, поэтому вы не получаете результат, попробуйте запрос ниже

MATCH (p:person)-[:MARRIED_AT]->(:marriage)-[:TOOK_PLACE_IN]->(rcc:church:Roman_Catholic_Church),
(p)-[:MARRIED_AT]->(:marriage)-[:TOOK_PLACE_IN]->(rc:church:Reformed_Church) 
RETURN DISTINCT p.name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...