Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add-example-for-getting-vertex/edge-without-specifying-tag/edge-type #2340

Merged
merged 3 commits into from
Nov 23, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs-2.0/2.quick-start/6.cheatsheet-for-ngql-command.md
Original file line number Diff line number Diff line change
Expand Up @@ -186,14 +186,14 @@
| 匹配点 | `(v)` | 用户可以在一对括号中使用自定义变量来表示模式中的点。例如`(v)`。 |
| 匹配 Tag | `MATCH (v:player) RETURN v` | 用户可以在点的右侧用`:<tag_name>`表示模式中的 Tag。 |
| 匹配多 Tag | `MATCH (v:player:team) RETURN v LIMIT 10` | 用户可以用英文冒号(:)匹配多 Tag 的点。 |
| 匹配点的属性 | `MATCH (v:player{name:"Tim Duncan"}) RETURN v` | 用户可以在 Tag 的右侧用`{<prop_name>: <prop_value>}`表示模式中点的属性。 |
| 匹配点的属性 | `MATCH (v:player{name:"Tim Duncan"}) RETURN v` <br><br>`MATCH (v) WITH v, properties(v) as props, keys(properties(v)) as kk LIMIT 10000 WHERE [i in kk where props[i] == "Tim Duncan"] RETURN v` | 用户可以在 Tag 的右侧用`{<prop_name>: <prop_value>}`表示模式中点的属性;或者不指定 Tag 直接匹配点的属性。 |
| 匹配单点 ID | `MATCH (v) WHERE id(v) == 'player101' RETURN v` | 用户可以使用点 ID 去匹配点。`id()`函数可以检索点的 ID。 |
| 匹配多点 ID | `MATCH (v:player { name: 'Tim Duncan' })--(v2) WHERE id(v2) IN ["player101", "player102"] RETURN v2` | 要匹配多个点的 ID,可以用`WHERE id(v) IN [vid_list]`。 |
| 匹配连接的点 | `MATCH (v:player{name:"Tim Duncan"})--(v2) RETURN v2.player.name AS Name` | 用户可以使用`--`符号表示两个方向的边,并匹配这些边连接的点。用户可以在`--`符号上增加`<`或`>`符号指定边的方向。 |
| 匹配路径 | `MATCH p=(v:player{name:"Tim Duncan"})-->(v2) RETURN p` | 连接起来的点和边构成了路径。用户可以使用自定义变量命名路径。 |
| 匹配边 | `MATCH (v:player{name:"Tim Duncan"})-[e]-(v2) RETURN e`<br>`MATCH ()<-[e]-() RETURN e LIMIT 3` | 除了用`--`、`-->`、`<--`表示未命名的边之外,用户还可以在方括号中使用自定义变量命名边。例如`-[e]-`。 |
| 匹配 Edge type | `MATCH ()-[e:follow]->() RETURN e LIMIT 5` | 和点一样,用户可以用`:<edge_type>`表示模式中的 Edge type,例如`-[e:follow]-`。 |
| 匹配边的属性 | ` MATCH (v:player{name:"Tim Duncan"})-[e:follow{degree:95}]->(v2) RETURN e` | 用户可以用`{<prop_name>: <prop_value>}`表示模式中 Edge type 的属性,例如`[e:follow{likeness:95}]`。 |
| 匹配边的属性 | ` MATCH (v:player{name:"Tim Duncan"})-[e:follow{degree:95}]->(v2) RETURN e` <br><br>`MATCH ()-[e]->() WITH e, properties(e) as props, keys(properties(e)) as kk LIMIT 10000 WHERE [i in kk where props[i] == 90] RETURN e`| 用户可以用`{<prop_name>: <prop_value>}`表示模式中 Edge type 的属性,例如`[e:follow{likeness:95}]`;或者不指定 Edge type 直接匹配边的属性。 |
| 匹配多个 Edge type | `MATCH (v:player{name:"Tim Duncan"})-[e:follow | :serve]->(v2) RETURN e` | 使用`|`可以匹配多个 Edge type,例如`[e:follow | :serve]`。第一个 Edge type 前的英文冒号(:)不可省略,后续 Edge type 前的英文冒号可以省略,例如`[e:follow | serve]`。 |
| 匹配多条边 | `MATCH (v:player{name:"Tim Duncan"})-[]->(v2)<-[e:serve]-(v3) RETURN v2, v3` | 用户可以扩展模式,匹配路径中的多条边。 |
| 匹配定长路径 | `MATCH p=(v:player{name:"Tim Duncan"})-[e:follow*2]->(v2) RETURN DISTINCT v2 AS Friends` | 用户可以在模式中使用`:<edge_type>*<hop>`匹配定长路径。`hop`必须是一个非负整数。`e`的数据类型是列表。 |
Expand Down
23 changes: 17 additions & 6 deletions docs-2.0/3.ngql-guide/7.general-query-statements/2.match.md
Original file line number Diff line number Diff line change
Expand Up @@ -156,8 +156,6 @@ nebula> MATCH (v:player:actor) \
+----------------------------------------------------------------------------------------+
```



### 匹配点的属性

用户可以在 Tag 的右侧用`{<prop_name>: <prop_value>}`表示模式中点的属性。
Expand Down Expand Up @@ -190,6 +188,14 @@ nebula> MATCH (v:player) \

在 openCypher 9 中,`=`是相等运算符,在 nGQL 中,`==`是相等运算符,`=`是赋值运算符。

用户也可以不指定 Tag,直接匹配点的属性。

```ngql
nebula> MATCH (v) \
WITH v, properties(v) as props, keys(properties(v)) as kk \
LIMIT 10000 WHERE [i in kk where props[i] == "Tim Duncan"] \
RETURN v;
```
### 匹配点 ID

用户可以使用点 ID 去匹配点。`id()`函数可以检索点的 ID。
Expand Down Expand Up @@ -365,10 +371,6 @@ nebula> MATCH ()-[e:follow]->() \

### 匹配边的属性

!!! Note

匹配边的属性的前提是 Edge type 本身有对应属性的索引,否则,用户无法执行 `MATCH` 语句匹配该属性。

用户可以用`{<prop_name>: <prop_value>}`表示模式中 Edge type 的属性,例如`[e:follow{likeness:95}]`。

```ngql
Expand All @@ -382,6 +384,15 @@ nebula> MATCH (v:player{name:"Tim Duncan"})-[e:follow{degree:95}]->(v2) \
+--------------------------------------------------------+
```

用户也可以不指定 Edge type,直接匹配边的属性。

```ngql
nebula> MATCH ()-[e]->() \
WITH e, properties(e) as props, keys(properties(e)) as kk \
LIMIT 10000 WHERE [i in kk where props[i] == 90] \
RETURN e;
```

### 匹配多个 Edge type

使用`|`可以匹配多个 Edge type,例如`[e:follow|:serve]`。第一个 Edge type 前的英文冒号(:)不可省略,后续 Edge type 前的英文冒号可以省略,例如`[e:follow|serve]`。
Expand Down