Я изучаю Cypher, и я создал проект "Уголовное расследование" на Neo4j
.
Я пытаюсь выполнить запрос, который выводит каждый Person
, который имеет two дети (Person
) и оба ребенка должны были совершить преступление. Чтобы добиться этого, я тестировал некоторые запросы с Person
(p
) с именем p.name = "Lillian"
, поэтому я знаю, что у этого человека двое детей, но только один из них совершил преступление.
Чтобы заставить это выполнить этот запрос (вернуть что-то, если у Лилиан есть два сына, которые совершили преступления, или ничего не вернуть:
match (p:Person)-[r:FAMILY_REL]->(s:Person)
where p.name = "Lillian"
and size((p)-[:FAMILY_REL]->()-[:PARTY_TO]->(:Crime))=2 and size((p)-[:FAMILY_REL]->()) = 2
return p, s
Поскольку я уже знал, что у Лилиан есть только один сын, который совершил преступление, запрос не должен был возвратил что-нибудь, но он вернул обоих своих детей.
Я предполагаю, что здесь неправильная часть запроса:
where /*...*/ and size((p)-[:FAMILY_REL]->()-[:PARTY_TO]->(:Crime))=2
Я думаю, что это подсчет только числа детей вместо количество детей, совершивших преступления.
Как правильно это сделать?