neo4j中的条件数据插入

时间:2018-01-01 11:59:14

标签: neo4j

我有一个空LIST,我想在其中插入一些CONTACT数据。我写了以下查询:

MERGE (u:CONTACT { id: 'random-id-01', email: 'some01@email.com', name: 'some-name-01', info: 'some-info-01 } )

  WITH u as u

  MATCH (pl:LIST { id: {listId} } ) 
     MERGE (pl)-[plcn:LIST_CONTACTS]->(u)

  RETURN u

但我还要查看重复的电子邮件。所以我写了以下查询:

MATCH (pl:LIST)-[plcn:LIST_CONTACTS]->(ux:CONTACT)
    WHERE ux.email <> 'some01@email.com'

MERGE (u:CONTACT { id: 'random-id-01', email: 'some01@email.com', name: 'some-name-01', info: 'some-info-01 } )

  WITH u as u

  MATCH (pl:LIST { id: {listId} } ) 
     MERGE (pl)-[plcn:LIST_CONTACTS]->(u)

  RETURN u

此查询仅在某些CONTACT数据已存在时有效。但是,如果创建了一个空的LIST,然后想要将CONTACT数据插入到新创建的LIST中,那么它就无效了。

我该如何解决这个问题?

提前致谢。

1 个答案:

答案 0 :(得分:1)

如果您希望电子邮件在以下各项中是唯一的:CONTACT节点,则在:CONTACT(电子邮件)上创建一个唯一约束,这将确保在插入尝试违反唯一性约束时引发错误。

我不太了解您使用不同邮件的所有联系人的MATCH的意图,而不是您要插入的邮件。你能说清楚你在尝试什么吗?