在neo4j中覆盖标记而不是复制

在neo4j中覆盖标记而不是复制,neo4j,cypher,Neo4j,Cypher,我有两种类型的节点:Persons和Tags。我想用标签标记我的人,但这种情况可能会发生多次 使用Cypher标记某人的方法: CREATE (p1:Person { name : 'Alex'}) CREATE (t1:Tag{ tagId: 't1'}) CREATE (p1)-[:TAGGED]->(t1) 但是,如果我再次执行此操作,它将创建两个新的人员和标记,并将它们连接起来。我希望能够覆盖现有的关系,而不是创建新的用户或标记(如果它们已经存在)。最好的方法是什么?使用创

我有两种类型的节点:Persons和Tags。我想用标签标记我的人,但这种情况可能会发生多次

使用Cypher标记某人的方法:

CREATE (p1:Person { name : 'Alex'})
CREATE (t1:Tag{ tagId: 't1'})
CREATE 
  (p1)-[:TAGGED]->(t1)
但是,如果我再次执行此操作,它将创建两个新的人员和标记,并将它们连接起来。我希望能够覆盖现有的关系,而不是创建新的用户或标记(如果它们已经存在)。最好的方法是什么?

使用
创建

MERGE (p1:Person { name : 'Alex'})
MERGE (t1:Tag{ tagId: 't1'})
MERGE (p1)-[:TAGGED]->(t1)

谢谢。工作正常,但有时我会看到添加了两个关系,并创建了两个同名标记?在:Person(name)和:Tag(tagId)上创建唯一性约束。@NicoleWhite你会怎么做?