0
我想在我的Neo4j數據庫修復了不正確的數據,我想有隻是一個暗號做更新,而不是數百萬行的轉移到自定義應用程序和背部。CQL - 如何在cypher中使用動態密鑰來設置Neo4j節點屬性?
我已經創建了一個使用動態密鑰通過標籤我各種類型的問題指定的所有節點上每個屬性搜索讀查詢 - 在這種情況下,不正確的序列化字符串。我遇到的問題是,在使用動態密鑰讀取查詢的偉大工程:
MATCH (n:xLabelNamex)
WITH
n,
[x IN keys(n)
WHERE n[x] STARTS WITH "\""
AND n[x] ENDS WITH "\""
] AS doesMatch
WHERE size(doesMatch) > 0
UNWIND doesMatch AS label
MATCH (m:xLabelNamex)
WHERE id(n)=id(m)
RETURN SUBSTRING(m[label], 1, SIZE(m[label]) - 2)
但是如果我離開一切不變,並從
RETURN SUBSTRING(m[label], 1, SIZE(m[label]) - 2)
最後一行更改爲:
SET m[label] = SUBSTRING(m[label], 1, length(m[label]) - 2)
結果在誤差:
Invalid input '[': expected an identifier character, node labels, a property map, whitespace, a relationship pattern, '(', '.', '=' or "+=" (line 12, column 10 (offset: 255))
" SET m[label] = SUBSTRING(m[label], 1, SIZE(m[label]) - 2)"
^
有沒有辦法做到這一點,或者我在這裏走錯了路?
看看關於Github的討論,我發現使用動態密鑰讀取節點的增加是在一年前添加的,但它看起來像是專門針對只讀。我開始挖掘Neo的來源,但這是一個巨獸。任何幫助,將不勝感激。
AFAIK,你是正確的,書面形式向動態鍵控性能不Cypher支架原生支持。但是,'apoc'中有很多選項可以這麼做。 –
Apoc看起來很棒,謝謝!這裏有很多功能,關於你認爲我應該開始在文檔中尋找我想要做什麼的任何指針? –
我還沒有與它在一段時間的工作,但我相信你可以創建'apoc.map.fromPairs()'一個地圖,通過動態生成的密鑰,值對,然後'設置的M + = result'哪裏結果就是你所說的程序結果。如果你的項目不能阻止你使用貝塔斯,我會建議切換到3.1並獲得最新的APOC,它允許你調用'apoc.map'作爲一個函數,而不是一個過程。 –