2015-05-30 44 views
0

.Hi,我將數據導入Neo4j圖形。neo4j刪除我的陣列數據

我已經導入了「Topics」,其中一些將.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添加到數組會殺死數組。這種行爲的用例顯然是......好的,爲空。但是無所謂。

如何將可能的空值附加到Cypher中的數組?

謝謝!

邁克

更新:我用三個查詢做了一個解決辦法:

  1. 創建主題和set t.aliases = [] + r.alias它可以爲null
  2. 更新話題r.aliases WHERE NOT HAS(t.aliases )。
  3. 更新話題r.aliases哪裏有(t.aliases)

這似乎是額外的工作。

回答

0

這是我對這個github issue發現:

您可以使用聚結,處理空值:

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

你的「null」別名在哪裏?無法在您的數據中看到它。

可以篩選出來與

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; 
+0

嗨,對不起它WASN不清楚。 't.aliases','r.alias'或'r.aliases'可以爲空。我更新了示例代碼以更好地展示。 –