2017-06-25 26 views
1

我有一些問題的Neo4j,CYPHER語言創建數組關係的foreach元素...在Neo4j的

我有這些類型的節點: 電影

{ 
    "overview":"An Amazon princess comes to the world of Man to become 
    the greatest of the female superheroes.", 
    "actors":[ 
    "Gal Gadot", 
    "Chris Pine", 
    "Connie Nielsen", 
    "Robin Wright", 
    "Danny Huston"], 
    "original_title":"Wonder Woman", 
    "runtime":141, 
    "title":"Wonder Woman" 

}

演員

{ 
"birthday":"1985-04-30", 
"place_of_birth":"Rosh Ha'ayin, Israel", 
"popularity":54.444332, 
"name":"Gal Gadot" 
}, 

我會在Actor(演員)之間創建一個關係「ACTED_IN」 nd電影,我會爲陣列中的每個演員「演員」這樣做。

這是命令:

MATCH (f:Movie), (a:Actors) 
FOREACH (n IN f.actors | CREATE (f)-[:ACTED_IN]->(a)) 

,但我不知道在哪裏放置「WHERE條件」 ......在演員陣= Actors.name每個元素。

謝謝你的幫助。

回答

2

你不需要FOREACH來做到這一點。您的查詢更改爲:

MATCH (f:Movie) 
UNWIND f.actors as names 
MATCH (a:Actors {name:names}) 
CREATE (f)-[:ACTED_IN]->(a) 

那就是:MATCH所有電影和使用UNWIND到名稱列表轉換成排的序列。之後,MATCH演員按名稱創建電影和匹配演員之間的關係。

+0

謝謝你隊友! – randy192

+0

不客氣! –