Skip to content

Commit

Permalink
add annotation to some examples of MATCH clause (#2492)
Browse files Browse the repository at this point in the history
https: //github.com//pull/2491
  • Loading branch information
cooper-lzy authored Mar 4, 2024
1 parent 32e6803 commit 996e665
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions docs-2.0-zh/3.ngql-guide/7.general-query-statements/2.match.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,11 @@ nebula> MATCH (v:player) \


```ngql
# 创建包含 name 属性和 age 属性的 Tag actor。
nebula> CREATE TAG actor (name string, age int);
# 插入 Tag actor 到点 player100。
nebula> INSERT VERTEX actor(name, age) VALUES "player100":("Tim Duncan", 42);
# 匹配 Tag 为 player 和 actor 的点。
nebula> MATCH (v:player:actor) \
RETURN v;
+----------------------------------------------------------------------------------------+
Expand Down Expand Up @@ -129,6 +132,7 @@ nebula> MATCH (v:player) \
使用`WHERE`子句直接匹配点的属性。

```ngql
# 匹配属性中值等于 Tim Duncan 的点。
nebula> MATCH (v) \
WITH v, properties(v) as props, keys(properties(v)) as kk \
WHERE [i in kk where props[i] == "Tim Duncan"] \
Expand All @@ -139,6 +143,7 @@ nebula> MATCH (v) \
| ("player100" :player{age: 42, name: "Tim Duncan"}) |
+----------------------------------------------------+
# 匹配 name 属性值存在于 names 列表内的起点,并返回起点和终点的数据。
nebula> WITH ['Tim Duncan', 'Yao Ming'] AS names \
MATCH (v1:player)-->(v2:player) \
WHERE v1.player.name in names \
Expand Down Expand Up @@ -184,6 +189,7 @@ nebula> MATCH (v:player { name: 'Tim Duncan' })--(v2) \
| ("player102" :player{age: 33, name: "LaMarcus Aldridge"}) |
+-----------------------------------------------------------+
# 查找 ID 为 player100 和 player101 的点,并返回 name 属性。
nebula> MATCH (v) WHERE id(v) IN {"player100", "player101"} \
RETURN v.player.name AS name;
+---------------+
Expand All @@ -204,6 +210,7 @@ nebula> MATCH (v) WHERE id(v) IN {"player100", "player101"} \
在 nGQL 1.x 中,`--`符号用于行内注释,从 nGQL 2.x 起,`--`符号表示出边或入边,不再用于注释。

```ngql
# name 属性值为 Tim Duncan 的点为 v,与 v 相连接的点为 v2,查找 v2 并返回其 name 属性值。
nebula> MATCH (v:player{name:"Tim Duncan"})--(v2:player) \
RETURN v2.player.name AS Name;
+---------------------+
Expand Down Expand Up @@ -232,6 +239,7 @@ nebula> MATCH (v:player{name:"Tim Duncan"})-->(v2:player) \
如果需要判断目标点,可以使用`CASE`表达式。

```ngql
# name 属性值为 Tim Duncan 的点为 v,与 v 相连接的点为 v2,查找 v2 并判断,如果 v2.team.name 的值不为空则返回 v2.team.name 属性值,如果 v2.player.name 的值不为空则返回 v2.player.name 属性值。
nebula> MATCH (v:player{name:"Tim Duncan"})--(v2) \
RETURN \
CASE WHEN v2.team.name IS NOT NULL \
Expand All @@ -252,6 +260,7 @@ nebula> MATCH (v:player{name:"Tim Duncan"})--(v2) \
如果需要扩展模式,可以增加更多点和边。

```ngql
# name 属性值为 Tim Duncan 的点为 v,指向点 v2,点 v3 也指向点 v2,返回 v3 的 name 属性值。
nebula> MATCH (v:player{name:"Tim Duncan"})-->(v2)<--(v3) \
RETURN v3.player.name AS Name;
+---------------------+
Expand All @@ -266,6 +275,7 @@ nebula> MATCH (v:player{name:"Tim Duncan"})-->(v2)<--(v3) \
如果不需要引用点,可以省略括号中表示点的变量。

```ngql
# 查找 name 属性值为 Tim Duncan 的点 v, 点 v3 与 v 指向同一个点,返回 v3 的 name 属性值。
nebula> MATCH (v:player{name:"Tim Duncan"})-->()<--(v3) \
RETURN v3.player.name AS Name;
+---------------------+
Expand All @@ -282,6 +292,7 @@ nebula> MATCH (v:player{name:"Tim Duncan"})-->()<--(v3) \
连接起来的点和边构成了路径。用户可以使用自定义变量命名路径。

```ngql
# 设置路径 p,其模式为 name 属性值为 Tim Duncan 的点 v 指向相邻的点 v2。返回所有符合条件的路径。
nebula> MATCH p=(v:player{name:"Tim Duncan"})-->(v2) \
RETURN p;
+--------------------------------------------------------------------------------------------------------------------------------------+
Expand All @@ -300,6 +311,7 @@ nebula> MATCH p=(v:player{name:"Tim Duncan"})-->(v2) \
### 匹配边

```ngql
# 匹配对应边并返回 3 条数据。
nebula> MATCH ()<-[e]-() \
RETURN e \
LIMIT 3;
Expand All @@ -321,6 +333,7 @@ nebula> MATCH ()<-[e]-() \
在 {{nebula.name}} 3.0.0 之前,匹配 Edge Type 的前提是 Edge Type 本身有对应属性的索引,否则,用户无法基于 Edge Type 执行 `MATCH` 语句。从 {{nebula.name}} 3.0.0 开始,匹配 Edge Type 可以不创建索引,但需要使用 `LIMIT` 限制输出结果数量,并且必须指定边的方向。从 {{nebula.name}} 3.5.0 开始,无需为 Edge Type 创建索引或者使用`LIMIT`限制输出结果数量,即可使用`MATCH`语句匹配边。

```ngql
# 匹配所有 edge type 为 follow 的边。
nebula> MATCH ()-[e:follow]->() \
RETURN e;
+----------------------------------------------------+
Expand Down

0 comments on commit 996e665

Please sign in to comment.