【发布时间】:2017-06-22 22:41:00
【问题描述】:
在数据库中,我有一个标签 Person,其中包含具有以下属性的节点:firstname, gender, lastname, id。
我有一个 CSV 文件,其中包含以下关系信息:
id sibling
1 3,4,5
我要做的是在id 和sibling 列中的值之间创建关系。
我正在使用以下代码:
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM
'file:///relationship.csv' AS line1
WITH line1, split(line1.sibling, ",") as siblings
UNWIND siblings as sibling
MERGE (p:Person{id:line1.id})
MERGE (k:Person{id:sibling})
MERGE (p)-[:SIBLING_OF]->(k)
但这种方法会创建仅具有 id 属性的新节点,而不是连接数据库中已存在的节点。
奇怪的是当我使用这个查询时:
MATCH (p:Person)
WHERE p.id='123'
RETURN p
它只返回以前在数据库中的节点(包含id、firstname、gender、lastname和id属性),没有新创建的关系,但是当我尝试返回具有关系的节点时,例如:
MATCH (p:Person)-[SIBLING_OF]-(k:Person)
WHERE p.id='123
RETURN p,k
返回新创建的k 节点,它只有id 属性。
有人知道我在查询中做错了什么吗?
【问题讨论】: