在neo4j中创建数组中的foreach元素

时间:2017-06-25 12:44:12

标签: neo4j cypher graph-databases

我对neo4j有一些问题,cypher语言...

我有这些类型的节点: 电影

 {
   "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和Movie之间创建一个“ACTED_IN”关系,我会为数组“actors”中的每个actor创建这个关系。

这是命令:

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

但我不知道在哪里放置“WHERE CONDITION”...... actor数组中的每个元素= Actors.name。

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

您不需要FOREACH来执行此操作。将您的查询更改为:

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

MATCH所有电影,并使用UNWIND将名称列表转换为行序列。在它之后,MATCH演员按名称创建电影和匹配的演员之间的关系。