我有一个空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
中,那么它就无效了。
我该如何解决这个问题?
提前致谢。
答案 0 :(得分:1)
如果您希望电子邮件在以下各项中是唯一的:CONTACT节点,则在:CONTACT(电子邮件)上创建一个唯一约束,这将确保在插入尝试违反唯一性约束时引发错误。
我不太了解您使用不同邮件的所有联系人的MATCH的意图,而不是您要插入的邮件。你能说清楚你在尝试什么吗?