在neo4j

时间:2017-06-11 06:32:07

标签: neo4j

在我的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;

但没有得到预期的结果。

2 个答案:

答案 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