我正在使用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
关系?
由于
答案 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
属性在后续调用时更新。