教程:Cypher 入门
流行文化关联
电影图谱是一个迷你图应用程序,包含通过合作电影相互关联的演员和导演。
在您按照本教程操作时,运行查询和 Cypher 代码来创建数据会有所帮助。
本教程将向您展示如何
-
创建:将电影数据插入到图谱中。
-
查找:检索单个电影和演员。
-
查询:查找图谱中的模式。
-
解决:回答关于图谱的一些问题。
创建电影图谱
-
创建并启动一个新的 Neo4j 数据库。
-
在 https://sandbox.neo4j.com 创建一个空白沙盒或...
-
在 Neo4j Desktop 中创建一个新数据库
-
创建一个新项目。
-
向项目添加数据库。
-
启动数据库。
-
-
-
打开 Neo4j Browser。
-
设置浏览器以允许多语句
-
在查询面板中输入
:guide movie-graph
,然后点击右侧的“播放”按钮。查询面板下方会打开一个新窗口,显示浏览器指南。 -
转到浏览器指南的第 2 页。
-
点击 Cypher 代码块,它将进入查询面板,然后点击“播放”按钮。
加载电影图谱后,您在 Neo4j Browser 中应看到以下内容
这是返回数据中部分数据的图视图。
如果您想查看返回数据的表格视图,请点击左侧的表格图标
您查看结果的方式也取决于返回的数据。如果查询返回节点,则可以将数据视为图。如果查询返回属性值,则只能将数据视为表格。
如果您需要帮助
:help cypher
当您在查询面板中运行 Cypher 代码时,它总是在查询面板下方创建一个新的结果面板。 |
查找演员和电影
接下来,您将学习如何查询单个节点。
-
查看每个查询示例
-
点击播放按钮运行查询
-
注意语法模式
-
尝试查找其他电影或演员
如果您需要语法帮助
:help MATCH
、:help WHERE
和 :help RETURN
查找名为“汤姆·汉克斯”的人...
将此代码复制并粘贴到查询面板中执行
MATCH (tom:Person)
WHERE tom.name = "Tom Hanks"
RETURN tom
图结果应如下所示
您还可以通过表格视图查看节点的属性
查找名为“云图”的电影...
在这里,我们以不同的方式过滤查询,我们在节点规范中指定值,而不是使用 WHERE
子句。
将此代码复制并粘贴到查询面板中执行
MATCH (cloudAtlas:Movie {title: "Cloud Atlas"})
RETURN cloudAtlas
这是此查询的结果
这是表格视图
查找图谱中的模式
到目前为止,您已经查询了图谱中的节点。接下来,您将获得检索相关节点的经验。
您将执行 Cypher 代码来查找图谱中的模式。
-
演员是出演电影的人。
-
导演是执导电影的人。
-
还存在哪些其他关系?
列出所有汤姆·汉克斯电影...
这是一个查询,我们想返回演员汤姆·汉克斯的 Person 节点,同时我们还想返回所有与汤姆·汉克斯有 ACTED_IN 关系的 Movie 节点。也就是说,汤姆·汉克斯出演过的所有电影。
将此代码复制并粘贴到查询面板中执行
MATCH (tom:Person {name: "Tom Hanks"})-[:ACTED_IN]->(tomHanksMovies)
RETURN tom,tomHanksMovies
这是此查询的结果
请注意,在这里我们还看到了汤姆·汉克斯节点和 Movie 节点之间的 DIRECTED 关系。这是因为我们的 Neo4j Browser 中有一个设置,使得结果节点将被连接
这是表格视图
谁执导了《云图》?
这是一个查询,我们想返回与《云图》 Movie 节点有 DIRECTED 关系的节点。它将返回执导该电影的人员姓名。
将此代码复制并粘贴到查询面板中执行
MATCH (cloudAtlas:Movie {title: "Cloud Atlas"})<-[:DIRECTED]-(directors)
RETURN directors.name
这是此查询的结果
回答关于图谱的一些问题
您听说过经典的“凯文·培根六度理论”吗?也就是说,在图谱中找到所有距离凯文·培根最多 6 跳的人。这只是一个最短路径查询,称为“培根路径”。要执行这种类型的查询,您需要指定
-
变长模式:变长关系
-
内置最短路径算法:shortestPath