如何使用neo4j中的merge防止重复并使查询更快?
我有这个密码查询来插入10000个节点。这个很好用如何使用neo4j中的merge防止重复并使查询更快?,neo4j,duplicates,cypher,load-csv,Neo4j,Duplicates,Cypher,Load Csv,我有这个密码查询来插入10000个节点。这个很好用 LOAD CSV WITH HEADERS FROM "file:///persons.csv" AS csv MERGE (u2:User {mobileNumber: csv.mobileNumber}) ON CREATE SET u2.memberType = csv.memberType ON CREATE SET u2.accountId = csv.accountId ON CREATE
LOAD CSV WITH HEADERS FROM "file:///persons.csv" AS csv
MERGE (u2:User {mobileNumber: csv.mobileNumber})
ON CREATE SET u2.memberType = csv.memberType
ON CREATE SET u2.accountId = csv.accountId
ON CREATE SET u2.accountType = csv.accountType
ON CREATE SET u2.createdAt = csv.createdAt
SET u2.updatedAt = csv.updatedAt
现在,20个新节点与一些已经存在的其他节点创建[:contact]关系。我的查询额外创建了20000个节点,运行速度非常慢。我知道merge在复制方面有一些问题。如何使此代码运行得更快
LOAD CSV WITH HEADERS FROM "file:///phonebook.csv" AS csv
MERGE (:User{mobileNubmer: csv.ownerMobileNumber})-[c:CONTACT]->
(:User{mobileNubmer:csv.contactMobileNumber})
ON CREATE SET c.createdAt = csv.createdAt
ON MATCH set c.previousIsActive =
csv.previousIsActive
SET c.name = csv.name
SET c.relationship = csv.relationship
SET c.isActive = csv.isActive
SET c.updatedAt = csv.updatedAt;
首先,您的第二个查询是错误的,因为您正在搜索MobileUnumber,而不是MobileUnumber。其次,mobileNumber应该是用户的唯一约束。第三(考虑到约束已到位),这应该是您的语法:
LOAD CSV WITH HEADERS FROM "file:///phonebook.csv" AS csv
MATCH (owner:User{mobileNumber: csv.ownerMobileNumber})
MATCH (contact:User{mobileNumber: csv.contactMobileNumber})
MERGE (owner)-[c:CONTACT]->(contact)
ON CREATE SET c.createdAt = csv.createdAt
ON MATCH set c.previousIsActive = csv.previousIsActive
SET c.name = csv.name
SET c.relationship = csv.relationship
SET c.isActive = csv.isActive
SET c.updatedAt = csv.updatedAt;
希望这有帮助
问候,,
Tom您使用不正确。请帮我修复它