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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法为每个节点创建属性列表相关的知识,希望对你有一定的参考价值。

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

任何建议都会非常有用。

答案

[更新]

你可以这样做:

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的参数。

以上是关于无法为每个节点创建属性列表的主要内容,如果未能解决你的问题,请参考以下文章

为片段制作自定义列表视图?

从 XML 节点 java 生成/获取 xpath

在 Neo4j 中将对象存储为属性

*** Bool 编码为数字属性列表片段。属性列表编码器

在 Groovy 中将字符串 XML 片段转换为文档节点

ListFragment 的上下文菜单