GraphGists

Cypher 简介 - 社交电影数据库

领域模型与设置

我们的示例图由带有 id、年份和标题的电影,以及带有名称的演员组成。演员与电影之间存在 ACTS_IN 关系,表示他们扮演的角色,该角色关系也具有一个 role 属性。

cineasts

我们鼓励您手动在交互式控制台中输入 Cypher 语句,但您也可以点击查询来运行它们。

像这个

MATCH (n)
RETURN "Hello Graph with "+count(*)+" Nodes!"
as welcome;

Cypher 初步

按 ID 返回单个节点(《黑客帝国》)

MATCH (movie:Movie {title:"The Matrix"})
RETURN movie;

返回《黑客帝国》节点的标题和 ID

MATCH (movie:Movie {title:"The Matrix"})
RETURN movie.id, movie.title;

首次使用 MATCH 子句,显示所有演员

MATCH (m:Movie {title:"The Matrix"})<-[:ACTS_IN]-(actor)
RETURN actor;

只返回名称,按名称排序

MATCH (m:Movie {title:"The Matrix"})<-[:ACTS_IN]-(actor)
RETURN actor.name order by actor.name;

首次聚合,统计演员数量

MATCH (m:Movie {title:"The Matrix"})<-[:ACTS_IN]-(actor)
RETURN count(*);

首次筛选,仅筛选名称以“s”结尾的演员

MATCH (m:Movie {title:"The Matrix"})<-[:ACTS_IN]-(actor)
WHERE actor.name =~ ".*s$"
RETURN actor.name;

插曲:探索数据集

一些用于未知数据集的探索性查询,请勿在生产实时实例上执行

统计节点

MATCH (n)
RETURN count(*);

统计关系类型

MATCH (n)-[r]->()
RETURN type(r), count(*);

列出所有节点及其关系

MATCH (n)-[r]->(m)
RETURN n as from, r as `->`, m as to;

接下来是 更新图