我的查询有个奇怪的问题。如果我写这样的东西:
MATCH (parentOfMother: Person_kol)-->(mother: Person_kol)-[:MOTHER]->(p: Person_kol)<-[:FATHER]-(father: Person_kol)<--(parentOfFather)-->(:Person_kol) WHERE NOT (:Person_kol)<--(parentOfMother)-->(mother)
RETURN distinct(p.idPerson)它给了我一个人,他母亲的母亲除了他的母亲没有任何孩子,但人的母亲的父亲有很多孩子。
如果我这样写这个查询,它就能正常工作:
MATCH (mother: Person_kol)-[:MOTHER]->(p: Person_kol)<-[:FATHER]-(father: Person_kol)<--(parentOfFather)-->(:Person_kol) WHERE NOT (mother: Person_kol)<--()-->()
RETURN distinct(p.idPerson)为什么会这样呢?我看不出查询有什么特别的区别。
发布于 2021-12-10 12:46:55
我认为这与以下事实有关:在第一个查询中,某些节点在路径/谓词组合中被重新访问。
我将按以下方式编写您的查询
MATCH (p:Person_kol)
WHERE NOT EXISTS((p)<-[:MOTHER]-()<-[:FATHER|MOTHER]-()-[:FATHER|MOTHER]->())
AND
EXISTS( (p)<-[:FATHER]-()<-[:FATHER|MOTHER]-()-[:FATHER|MOTHER]->())
RETURN phttps://stackoverflow.com/questions/70295914
复制相似问题