教程:Cypher 入门
流行文化连接
电影图 是一个小型图应用程序,包含演员和导演,他们通过合作的电影相互关联。
如果您在学习本教程时运行查询和 Cypher 代码以创建数据,则会有所帮助。
本教程将向您展示如何
-
创建:将电影数据插入图中。
-
查找:检索单个电影和演员。
-
查询:在图中查找模式。
-
解决:回答有关图的一些问题。
创建电影图
-
创建并启动一个新的 Neo4j 数据库。
-
在 https://sandbox.neo4j.com 创建一个空白沙箱,或...
-
在 Neo4j 桌面中创建一个新的数据库
-
创建一个新项目。
-
将数据库添加到项目中。
-
启动数据库。
-
-
-
打开 Neo4j 浏览器。
-
将浏览器设置设置为允许多语句
-
在查询窗格中输入
:guide movie-graph
,然后单击右侧的“播放”按钮。查询窗格下方会打开一个新的窗口,其中包含浏览器指南。 -
转到浏览器指南的第 2 页。
-
单击 Cypher 代码块,将其带到查询窗格中,然后单击“播放”按钮。
这是加载电影图后在 Neo4j 浏览器中应该看到的内容
这是返回数据的一部分的图视图。
如果要查看返回数据的表格视图,请单击左侧的表格图标
查看结果的方式还取决于返回的数据。如果查询返回节点,则可以将数据视为图。如果查询返回属性值,则只能将数据视为表格。
如果您需要帮助
: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 浏览器中有一个设置,结果节点将被连接
这是表格视图
谁执导了“云图”?
这是一个查询,我们希望返回与云图 Movie 节点具有 DIRECTED 关系的节点。它将返回执导这部电影的人的姓名。
将此代码复制并粘贴到查询窗格中,然后执行。
MATCH (cloudAtlas:Movie {title: "Cloud Atlas"})<-[:DIRECTED]-(directors)
RETURN directors.name
这是此查询的结果
回答有关图的一些问题
您听说过经典的“凯文·贝肯六度分离”吗?也就是说,找到所有与凯文·贝肯在图中最多 6 跳距离内的人。这只是一个最短路径查询,称为“贝肯路径”。要执行此类查询,您需要指定
-
可变长度模式:可变长度关系
-
内置 shortestPath() 算法:shortestPath