2

我上周五开始学习 Neo4j。

我已经在我的本地数据库上完成了Cypher 示例,是否还有一些我想学习的其他查询:

给定这三部矩阵电影,我如何只列出在这三部影片中都出演过的演员?或者更一般地说,假设我有一堆电影、演员和 ACTS_IN 关系。

给定3部电影:

  • 列出所有演过 ALL 3 的演员
  • 列出所有在这 3 部电影中出演过的演员(以及他们出演的电影)

同样,给定 3 个演员

  • 列出所有 3 名演员的所有电影
  • 列出所有拥有这 3 位演员中的任何一位的电影(以及他们拥有的演员)

谢谢!!

4

1 回答 1

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。:)

于 2013-09-23T17:00:16.460 回答