如果属性发生变化,如何强制建立独特的关系?

时间:2015-08-13 17:00:50

标签: neo4j

我正在使用neo4j构建应用,当用户关注其他用户时我遇到了问题。这是查询:

MATCH (me:User { id: 1234}),(friend:User)
WHERE friend.id = 5678
CREATE UNIQUE (me)-[r:FOLLOWS {since:1439485400}]->(friend)
RETURN r

如果用户重复此过程,则会出现问题,因为since值会发生变化且CREATE UNIQUE无法正常工作。

如果属性发生变化,如何强制使用唯一的FOLLOWS关系?

由于

1 个答案:

答案 0 :(得分:2)

您必须使用MERGE

MATCH (me:User { id: 1234}),(friend:User)
WHERE friend.id = 5678
MERGE (me)-[r:FOLLOWS]->(friend)
ON CREATE SET r.since = 1439485400
ON MATCH SET r.since = 1439485400
RETURN r

这保证了两个用户之间只有一个FOLLOWS。 since属性在后续调用时更新。