Neo4j 这个密码查询缺少什么?

Neo4j 这个密码查询缺少什么?,neo4j,cypher,Neo4j,Cypher,我正在学习Cypher,并在Neo4j上创建了一个“犯罪调查”项目 我试图将总共只有两个儿子/女儿且每个家庭成员都必须犯罪的父母作为输出返回。 因此,为了在图中得到这一点,我执行了以下查询: match(:Crime)<-[:PARTY_TO]-(p:Person)-[:FAMILY_REL]->(s:Person)-[:PARTY_TO]->(:Crime) where size((p)-[:FAMILY_REL]->())=2 return p, s 匹配(:犯罪)

我正在学习Cypher,并在
Neo4j
上创建了一个“犯罪调查”项目

我试图将总共只有两个儿子/女儿且每个家庭成员都必须犯罪的父母作为输出返回。 因此,为了在图中得到这一点,我执行了以下查询:

match(:Crime)<-[:PARTY_TO]-(p:Person)-[:FAMILY_REL]->(s:Person)-[:PARTY_TO]->(:Crime)
where size((p)-[:FAMILY_REL]->())=2
return p, s
匹配(:犯罪)(s:Person)-[:PARTY\u TO]->(:犯罪)
其中大小((p)-[:FAMILY_REL]->())=2
返回p,s
家庭关系
关系显示了
p
)的儿子,
当事人关系显示了
犯下的
犯罪
节点

上一个查询没有正常工作。它显示了有两个以上儿子的父母,以及只有一个儿子的儿子

查询的逻辑有什么问题?

大小((p)-[:FAMILY\u REL]->())
统计
p
的所有孩子,包括没有犯罪的孩子

此查询应能更好地工作,因为它只统计犯罪儿童:

MATCH (:Crime)<-[:PARTY_TO]-(p:Person)-[:FAMILY_REL]->(s:Person)-[:PARTY_TO]->(:Crime)
WITH p, COLLECT(s) AS badKids
WHERE SIZE(badKids) = 2
RETURN p, badKids
匹配(:犯罪)(s:Person)-[:PARTY\u TO]->(:犯罪)
与p一起,收集(s)作为坏孩子
其中大小(badKids)=2
返回p,坏孩子们