neo4j删除我的数组数据

时间:2015-05-30 00:28:14

标签: arrays neo4j

.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中的数组?

谢谢!

麦克

更新:我使用了三个查询来解决方法:

  1. 创建主题和set t.aliases = [] + r.alias可能为空
  2. 使用r.aliases更新主题WHERE NOT HAS(t.aliases)。
  3. 使用r.aliases更新主题WHERE HAS(t.aliases)
  4. 这似乎是额外的工作。

2 个答案:

答案 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,[]);