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

问题描述 投票:0回答:1

我有两个文件。第一个文件包含具有特定属性的用户列表。我已将它们加载到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]

任何建议都会非常有用。

neo4j cypher
1个回答
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列表的末尾(或者,如果pincode属性尚不存在,则使用单个元素列表初始化该属性)。 COALESCE函数返回第一个非NULL的参数。

© www.soinside.com 2019 - 2024. All rights reserved.