neo4j中的条件数据插入

问题描述 投票:0回答:1

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

MERGE (u:CONTACT { id: 'random-id-01', email: '[email protected]', 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 <> '[email protected]'

MERGE (u:CONTACT { id: 'random-id-01', email: '[email protected]', 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中时,它就无法工作了。

我怎么解决这个问题?

提前致谢。

neo4j
1个回答
1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.