Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
neo4j创建重复节点_Neo4j_Cypher - Fatal编程技术网

neo4j创建重复节点

neo4j创建重复节点,neo4j,cypher,Neo4j,Cypher,我有以下用户: email,ip abc@hotmail.com,73.53.30.159 xyz@gmail.com,1.2.3.4 abc@hotmail.com,1.1.1.1 以及以下ips csv: ip 73.53.30.159 1.1.1.1 我正在使用以下方法创建两种节点类型: USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "file:///ips2.csv" AS row CREATE (:IP {ip: row.ip})

我有以下用户:

email,ip
abc@hotmail.com,73.53.30.159
xyz@gmail.com,1.2.3.4
abc@hotmail.com,1.1.1.1
以及以下ips csv:

ip
73.53.30.159
1.1.1.1
我正在使用以下方法创建两种节点类型:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///ips2.csv" AS row
CREATE (:IP {ip: row.ip});
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///ips2.csv" AS row
CREATE (:IP {ip: row.ip});

然后,我想在具有给定ip的用户与相应ip节点之间创建连接:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///emails.csv" AS row
MATCH (u:USER {email: row.email, ip:row.ip})
MATCH (ip:IP {ip: row.ip})
MERGE (ip)-[:ACCESSED]->(u);
然而,在我的例子中abc@hotmail.com“正在创建两次,一次由1.1.1.1访问,一次由73.53.30.159访问。 我希望abc@hotmail.com“节点创建一次,有两个传入关系,一个来自1.1.1.1,一个来自73.53.30.159

我该怎么做呢?
谢谢。

在导入文件中,如果相同的数据可能出现多次,请在创建节点时使用“合并”而不是“创建”


我假设您在:IP(IP)和:IP9(IP)上有唯一的约束?您需要对:USER(电子邮件)设置唯一约束或索引,具体取决于同一电子邮件是否可由多个用户使用。

在导入文件中,如果同一数据可以出现多次,请在创建节点时使用“合并”而不是“创建”


我假设您在:IP(IP)和:IP9(IP)上有唯一的约束?您需要对:USER(email)设置唯一约束或索引,具体取决于同一封电子邮件是否可供多个用户使用。

您的用户CSV包含重复的电子邮件地址,具有不同的IP地址:将IP地址存储为节点属性没有意义,因为其中有几个节点,您无论如何都要与
IP
节点建立关系

只需先创建
IP
节点,然后在创建时直接连接
用户
节点(仅从电子邮件地址):


您的用户CSV包含重复的电子邮件地址,具有不同的IP地址:将IP地址存储为节点属性是没有意义的,因为其中有多个,并且您无论如何都要创建与
IP
节点的关系

只需先创建
IP
节点,然后在创建时直接连接
用户
节点(仅从电子邮件地址):


在我的导入文件中,同一封电子邮件可能会出现多次。我试图用“合并”替换“创建”,但我仍然得到相同电子邮件的重复节点。是的,我对IP(IP)和用户索引(电子邮件)有唯一的约束。重复节点真的重复吗?或者是否存在其他财产差异?另外,我注意到您使用的是:USER和:A1USER节点,是具有这些标签的节点之间的复制,还是仅在一个标签或另一个标签中的复制?在我的导入文件中,相同的电子邮件可能会出现多次。我试图用“合并”替换“创建”,但我仍然得到相同电子邮件的重复节点。是的,我对IP(IP)和用户索引(电子邮件)有唯一的约束。重复节点真的重复吗?或者是否存在其他财产差异?另外,我注意到您使用的是:USER和:A1USER节点,是具有这些标签的节点之间的复制,还是仅在一个标签或另一个标签中?在“创建2个节点类型”查询中,您从同一CSV文件加载了两次,还创建了两次相同节点类型的实例。这是一个输入错误,还是您的实际查询?在“创建2个节点类型”查询中,您将从同一个CSV文件加载两次,并创建两次相同节点类型的实例。这是一个打字错误,还是你的实际查询?
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///emails.csv" AS row
MATCH (u:USER {email: row.email, ip:row.ip})
MATCH (ip:IP {ip: row.ip})
MERGE (ip)-[:ACCESSED]->(u);
CREATE CONSTRAINT ON (n:IP) ASSERT n.ip IS UNIQUE;
CREATE CONSTRAINT ON (n:USER) ASSERT n.email IS UNIQUE;

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///ips2.csv" AS row
CREATE (:IP {ip: row.ip});

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///emails.csv" AS row
// Merge on the "primary key" only
MERGE (u:USER {email: row.email})
WITH row, u
MATCH (ip:IP {ip: row.ip})
MERGE (ip)-[:ACCESSED]->(u);