我上周五开始学习 Neo4j。
我已经在我的本地数据库上完成了Cypher 示例,是否还有一些我想学习的其他查询:
给定这三部矩阵电影,我如何只列出在这三部影片中都出演过的演员?或者更一般地说,假设我有一堆电影、演员和 ACTS_IN 关系。
给定3部电影:
- 列出所有演过 ALL 3 的演员
- 列出所有在这 3 部电影中出演过的演员(以及他们出演的电影)
同样,给定 3 个演员
- 列出所有 3 名演员的所有电影
- 列出所有拥有这 3 位演员中的任何一位的电影(以及他们拥有的演员)
谢谢!!
出演了所有3个:
start m1=node:node_auto_index(title="The Matrix"),
m2=node:node_auto_index(title="The Matrix Reloaded"),
m3=node:node_auto_index(title="The Matrix Revolutions")
match a-[:ACTS_IN]->m1, a-[:ACTS_IN]->m2, a-[:ACTS_IN]->m3
return a;
采取任何行动:(最简单的语法是仅从 2.0 开始的联合,所以我将使用它)
start m=node:node_auto_index(title="The Matrix")
match a-[:ACTS_IN]->m
return a, m
union
start m=node:node_auto_index(title="The Matrix Reloaded")
match a-[:ACTS_IN]->m
return a, m
union
start m=node:node_auto_index(title="The Matrix Revolutions")
match a-[:ACTS_IN]->m
return a, m;
其他两个查询基本相同,只需将标题换成姓名,输入人名,然后在开始子句中将 m 换成 a。:)