我有查询:
LOAD CSV WITH HEADERS FROM 'file:///attributes.csv' AS line
MATCH (p:Property {old_id: line.property_id})
MERGE (a:Attribute {description: line.description})-[:ATTRIBUTE_OF {old_id: line.id, value: line.value}]->(p)
对于每个新行,我试图在描述相同时合并属性,但是与已匹配的Property节点建立新关系。
我遇到的问题是现有的关系正在被新的关系取代。
如何确保维护以前创建的所有关系,并且只创建新关系?
答案 0 :(得分:1)
您可以分两步尝试:
MERGE
相同时,line.description
属性。CREATE
a
和p
个节点之间的新关系。示例查询:
LOAD CSV WITH HEADERS FROM 'file:///attributes.csv' AS line
MATCH (p:Property {old_id: line.property_id})
MERGE (a:Attribute {description: line.description})
CREATE (a)-[:ATTRIBUTE_OF {old_id: line.id, value: line.value}]->(p)
答案 1 :(得分:0)
我这样做:
LOAD CSV WITH HEADERS FROM 'file:///attributes.csv' AS line
MATCH (p:Property {old_id: line.property_id})
OPTIONAL MATCH (:Attribute {description: line.description})-[r:ATTRIBUTE_OF {old_id: line.id, value: line.value}]->(p)
WHERE r IS NULL
CREATE (:Attribute {description: line.description})-[:ATTRIBUTE_OF {old_id: line.id, value: line.value}]->(p)
这可能与Bruno Peres解决方案中的查询略有不同 - 请检查并报告哪些适用于您的案例。