Я хотел бы найти всех людей, которые участвовали во всех указанных фильмах, например, в 2 фильмах: «Терминатор», «Истинная ложь»
У меня есть следующий запрос:
MATCH (t:Title)-[:ACTS_IN]-(p:Principal)-[:ACTS_BY]->(n:Name)
WHERE t.originalTitle IN ["The Terminator", "True Lies"]
WITH n, collect(n) as names
WHERE SIZE(names) >= 2
RETURN n.primaryName
, который отлично работает, если каждый человек участвовал (:ACTS_BY
отношения) только один раз в каждом фильме.Но согласно моей схеме базы данных, каждый человек может иметь отношения 0-N :ACTS_BY
между узлами «Главный» и «Имя» (например, один и тот же человек может быть одновременно продюсером и актером фильма).
Проблема заключается в том, что упомянутый запрос Cypher также возвращает человека (узел Name
) в случае, если этот человек участвовал 2+ раза в одном фильме и 0 раз в другом, но мне нужно только вернуть узел Name
в случае, если человекучаствовал в каждом фильме.
Пожалуйста, помогите улучшить запрос для его достижения.