2014-04-15 343 views
0

我剛開始使用Neo4j服務器2.0.1。我在編寫密碼腳本時遇到了一些問題,即將其中一個節點屬性更改爲基於其已定義的屬性之一。如何根據Neo4j中其中一個屬性更改節點的屬性

所以,如果我創建這些節點:

CREATE (:Post {uname:'user1', content:'Bought a new pair of pants today', kw:''}), 
     (:Post {uname:'user2', content:'Catching up on Futurama', kw:''}), 
     (:Post {uname:'user3', content:'The last episode of Game of Thrones was awesome', kw:''}) 

我希望腳本看內容屬性,並挑選出字「買」,並使用正則表達式來挑選出kw屬性設置爲單詞大於五個字符。所以,user2的帖子kw是「Catching,Futurama」,user3的帖子kw是「episode,Thrones,awesome」。

任何幫助將不勝感激。

回答

1

你可以做這樣的事情:如果你想這樣做的所有職位,這可能不是最快的操作

MATCH (p:Post { uname:'user1' }) 
WHERE p.content =~ "Bought .+" 
SET p.kw=filter(w in split(p.content," ") WHERE length(w) > 5) 

MATCH (p:Post) 
WHERE p.content =~ "Bought .+" 
SET p.kw=filter(w in split(p.content," ") WHERE length(w) > 5) 
  • 分裂將字符串分割成部分的集合,在這種情況下,單詞由空格分隔
  • 過濾器通過WHERE後面的條件過濾集合,只有滿足條件的元素保持

也許你想要爲這些關鍵字創建節點並將該帖子鏈接到關鍵字節點。

+0

「拆分」功能似乎在2.0 refcard中缺失。它確實顯示在2.1中。 – tstorms

+0

你能解釋一下你在SET子句中做了什麼嗎? – user3520220

+0

更新了描述 –

相關問題