.Hi,我正在将数据导入到Neo4j图中。
我导入了“主题”,其中一些将.aliases设置为数组,有些则没有。
LOAD CSV WITH HEADERS FROM "file:///home/michael/db/Aliases.csv" AS r
MATCH (t:Topic { mysql_id: toInt(r.id)})
SET t.aliases = [] + t.aliases + split(r.aliases, ';') + r.alias;
// Where t.aliases, r.aliases, or r.alias can be null.
// If any are null then the result is null, erasing the other data.
问题是在数组中添加任何null会导致数组死亡。这种行为的用例显然是......好吧,null。但无论如何。
如何将可能为null的值附加到Cypher中的数组?
谢谢!
麦克
更新:我使用了三个查询来解决方法:
set t.aliases = [] + r.alias
可能为空这似乎是额外的工作。
答案 0 :(得分:0)
你的“空”别名在哪里?无法在您的数据中看到它。
您可以使用
过滤掉它们LOAD CSV WITH HEADERS FROM "file:///home/michael/db/Aliases.csv" AS r
with r, filter(x in split(r.aliases, ';') WHERE not x is null) as aliases
MATCH (t:Topic { mysql_id: toInt(r.id)})
SET t.aliases2 = t.aliases + aliases,
t.aliases3 = + aliases;
答案 1 :(得分:0)
以下是我在github issue上找到的内容:
您可以使用coalesce来处理空值:
LOAD CSV WITH HEADERS FROM "file:///home/michael/db/Aliases.csv" AS r
MATCH (t:Topic { mysql_id: toInt(r.id)})
SET t.aliases = coalesce(t.aliases,[]) + split(coalesce(r.aliases,''), ';') + coalesce(r.alias,[]);