我对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。
感谢您的帮助。
答案 0 :(得分:3)
您不需要FOREACH
来执行此操作。将您的查询更改为:
MATCH (f:Movie)
UNWIND f.actors as names
MATCH (a:Actors {name:names})
CREATE (f)-[:ACTED_IN]->(a)
即MATCH
所有电影,并使用UNWIND将名称列表转换为行序列。在它之后,MATCH
演员按名称创建电影和匹配的演员之间的关系。