无法为每个节点创建属性列表

时间:2018-01-31 01:23:46

标签: neo4j cypher

我有两个文件。第一个文件包含具有特定属性的用户列表。我已将它们加载到Neo4j中,如下所示:

USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "file:///users.csv" AS row
CREATE (U:User{userid:row.userid, username:row.username})

现在,我有第二个文件,其中包含用户留下或曾经住过的地方的密码。例: 用户Pincodes

A 001

B 002

A 003

我想在标签User中添加一个属性,以便将所有pincodes添加为列表。但是当我使用下面的查询时,它只存储最新的值而不是所有值作为列表。

USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "file:///user_pincode.csv" AS line
MATCH (U:User)
WHERE U.userid=line.userid 
SET U.pincode=[line.pincode]

任何建议都会非常有用。

1 个答案:

答案 0 :(得分:0)

[增订]

你可以这样做:

USING PERIODIC COMMIT 1000
LOAD CSV FROM "file:///user_pincode.csv" AS line
MATCH (u:User)
WHERE u.userid=line[0]
SET u.pincode = COALESCE(u.pincode, []) + line[1]

由于您的CSV数据没有标头,因此此查询省略了WITH HEADERS选项,并将line视为数组。它将新的密码附加到现有pincode列表的末尾(或者,如果pincode属性尚不存在,则使用单个元素列表初始化该属性)。 COALESCE函数返回第一个非NULL的参数。