Neo4j 简明教程

Neo4j - Where Clause

与 SQL 类似,Neo4j CQL 在 CQL MATCH 命令中提供了 WHERE 子句以过滤 MATCH 查询的结果。

Syntax

以下是 WHERE 子句的语法。

MATCH (label)
WHERE label.country = "property"
RETURN label

Example

在继续执行示例之前,请按照以下方式在数据库中创建五个节点。

CREATE(Dhawan:player{name:"shikar Dhawan", YOB: 1985, runs:363, country: "India"}
CREATE(Jonathan:player{name:"Jonathan Trott", YOB:1981, runs:229, country:"South Africa"}
CREATE(Sangakkara:player{name:"Kumar Sangakkara", YOB:1977, runs:222,
   country:"Srilanka"})
CREATE(Rohit:player{name:"Rohit Sharma", YOB: 1987, runs:177, country:"India"})
CREATE(Virat:player{name:"Virat Kohli", YOB: 1988, runs:176, country:"India"})
CREATE(Ind:Country {name: "India", result: "Winners"})

以下是使用 WHERE 子句返回所有属于印度的球员(节点)的示例 Cypher 查询。

MATCH (player)
WHERE player.country = "India"
RETURN player

执行上述查询,执行以下步骤:

Step 1 - 打开 Neo4j Desktop App 并启动 Neo4j Server。使用 URL http://localhost:7474/ 打开 Neo4j 的内置浏览器应用,如下面的屏幕截图所示。

browser app

Step 2 - 在美元提示符中复制并粘贴所需的查询,并按播放按钮(执行查询)突出显示在下面的屏幕截图中。

where player

Result

执行后,您将获得以下结果。

where result

WHERE Clause with Multiple Conditions

您还可以使用 WHERE 子句验证多个条件。

Syntax

以下是具有多个条件在 Neo4j 中使用 WHERE 子句的语法。

MATCH (emp:Employee)
WHERE emp.name = 'Abc' AND emp.name = 'Xyz'
RETURN emp

Example

以下是使用两种条件在 Neo4j 数据库中过滤节点的示例 Cypher 查询。

MATCH (player)
WHERE player.country = "India" AND player.runs >=175
RETURN player

执行上述查询,执行以下步骤:

Step 1 - 打开 Neo4j Desktop App 并启动 Neo4j Server。使用 URL http://localhost:7474/ 打开 Neo4j 的内置浏览器应用,如下面的屏幕截图所示。

browser app

Step 2 - 在美元提示符中复制并粘贴所需的查询,并按播放按钮(执行查询)突出显示在下面的屏幕截图中。

return player

Result

执行后,您将获得以下结果。

condition result

Using Relationship with Where Clause

您还可以使用 Where 子句使用关系来过滤节点。

Example

假设我们有数据库中的以下图表。

assumed database

以下是如下所示使用 WHERE 子句检索印度最高得分的示例 Cypher 查询。

MATCH (n)
WHERE (n)-[: TOP_SCORER_OF]->( {name: "India", result: "Winners"})
RETURN n

执行上述查询,执行以下步骤:

Step 1 - 打开 Neo4j Desktop App 并启动 Neo4j Server。使用 URL http://localhost:7474/ 打开 Neo4j 的内置浏览器应用,如下面的屏幕截图所示。

browser app

Step 2 - 在美元提示符中复制并粘贴所需的查询,并按播放按钮(执行查询)突出显示在下面的屏幕截图中。

winners result

Result

在执行时,您将获得以下结果。在这里,您可以观察到 Neo4j 返回了具有名为印度的节点与国家有 TOP_SCORER_OF 关系的节点。

returned node