在我的neo4j graph-db中,我有一种类型的节点Person
和一种类型的关系SENT_GIFT
。因此,这使得两个特定Person
之间存在双向关系。例如 -
i)person_1可能只赠送给person_2
ii)person_2可能只向person_1赠送
iii)person_1和person_2可以相互赠送
现在我想编写一个可以找到的密码 - 所有给予礼物(SENT_GIFT)的人到特定人员(由profileid指定),但具体人员没有给予这些人。
我试图用以下方式写Cypher -
MATCH (specific_person:Person {profileid: <profile_id>})
MATCH (from_person:Person)-[rOpp:SENT_GIFT]->(specific_person)-[rDir:SENT_GIFT]->(from_person)
WHERE rDir is null
RETURN from_person;
但没有得到预期的结果。
答案 0 :(得分:4)
你会想要在这里使用WHERE子句来否定你在比赛中不想要的模式。
类似的东西:
MATCH (from_person:Person)-[:SENT_GIFT]->(specific_person:Person {profileid: $profile_id})
WHERE NOT (specific_person)-[:SENT_GIFT]->(from_person)
RETURN from_person;
答案 1 :(得分:4)
Match (user:User)-[r]->(user2:User)
Where Not (user2)-[]->(user)
Return user, r, user2