我怎么能用py2neo创建唯一的节点

new*_*ike 2 neo4j py2neo

假设我需要使用电子邮件创建唯一节点,

如果我运行以下代码,它将使用相同的电子邮件创建2个节点

person_nod = Node("person", email="bob123@gmail.com")
graph.create(person_nod)

person_nod = Node("person", email="bob123@gmail.com")
graph.create(person_nod)
Run Code Online (Sandbox Code Playgroud)

我不知道如何避免使用neo4j复制节点

Mar*_*sse 6

首先,如果您需要唯一节点,则应在标签person和属性上创建唯一性约束email:

graph = Graph()
graph.schema.create_uniqueness_constraint('person', 'email')
Run Code Online (Sandbox Code Playgroud)

现在,如果您尝试添加违反唯一性约束的节点,则会出现错误.即你的第二个创建语句将失败.

您也可以合并节点而不是创建节点.MERGE匹配现有节点或创建它们(如果它们不存在):

person_node = graph.merge('person', property_key='email', property_value='email@email.com')
Run Code Online (Sandbox Code Playgroud)

合并请参阅:http://py2neo.org/2.0/essentials.html#py2neo.Graph.merge