From 6a75fdb084c3698d4cdd265b622214a9ca6c83d1 Mon Sep 17 00:00:00 2001 From: Abby <78209557+abby-cyber@users.noreply.github.com> Date: Tue, 22 Nov 2022 18:33:31 +0800 Subject: [PATCH 1/3] add-example-for-getting-vertex/edge-without-specifying-tag/edge-type --- .../7.general-query-statements/2.match.md | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/docs-2.0/3.ngql-guide/7.general-query-statements/2.match.md b/docs-2.0/3.ngql-guide/7.general-query-statements/2.match.md index c28761ee5f4..4ef2e564b13 100644 --- a/docs-2.0/3.ngql-guide/7.general-query-statements/2.match.md +++ b/docs-2.0/3.ngql-guide/7.general-query-statements/2.match.md @@ -156,8 +156,6 @@ nebula> MATCH (v:player:actor) \ +----------------------------------------------------------------------------------------+ ``` - - ### 匹配点的属性 用户可以在 Tag 的右侧用`{: }`表示模式中点的属性。 @@ -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。 @@ -365,10 +371,6 @@ nebula> MATCH ()-[e:follow]->() \ ### 匹配边的属性 -!!! Note - - 匹配边的属性的前提是 Edge type 本身有对应属性的索引,否则,用户无法执行 `MATCH` 语句匹配该属性。 - 用户可以用`{: }`表示模式中 Edge type 的属性,例如`[e:follow{likeness:95}]`。 ```ngql @@ -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]`。 From d2dc40ed4944e46a97c4d4f50cb6b7f4de981a2a Mon Sep 17 00:00:00 2001 From: Abby <78209557+abby-cyber@users.noreply.github.com> Date: Wed, 23 Nov 2022 10:38:57 +0800 Subject: [PATCH 2/3] Update 6.cheatsheet-for-ngql-command.md --- docs-2.0/2.quick-start/6.cheatsheet-for-ngql-command.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs-2.0/2.quick-start/6.cheatsheet-for-ngql-command.md b/docs-2.0/2.quick-start/6.cheatsheet-for-ngql-command.md index edc77901138..74e8859ed7f 100644 --- a/docs-2.0/2.quick-start/6.cheatsheet-for-ngql-command.md +++ b/docs-2.0/2.quick-start/6.cheatsheet-for-ngql-command.md @@ -186,14 +186,14 @@ | 匹配点 | `(v)` | 用户可以在一对括号中使用自定义变量来表示模式中的点。例如`(v)`。 | | 匹配 Tag | `MATCH (v:player) RETURN v` | 用户可以在点的右侧用`:`表示模式中的 Tag。 | | 匹配多 Tag | `MATCH (v:player:team) RETURN v LIMIT 10` | 用户可以用英文冒号(:)匹配多 Tag 的点。 | - | 匹配点的属性 | `MATCH (v:player{name:"Tim Duncan"}) RETURN v` | 用户可以在 Tag 的右侧用`{: }`表示模式中点的属性。 | + | 匹配点的属性 | `MATCH (v:player{name:"Tim Duncan"}) RETURN v`
`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 的右侧用`{: }`表示模式中点的属性;或者不指定 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`
`MATCH ()<-[e]-() RETURN e LIMIT 3` | 除了用`--`、`-->`、`<--`表示未命名的边之外,用户还可以在方括号中使用自定义变量命名边。例如`-[e]-`。 | | 匹配 Edge type | `MATCH ()-[e:follow]->() RETURN e LIMIT 5` | 和点一样,用户可以用`:`表示模式中的 Edge type,例如`-[e:follow]-`。 | - | 匹配边的属性 | ` MATCH (v:player{name:"Tim Duncan"})-[e:follow{degree:95}]->(v2) RETURN e` | 用户可以用`{: }`表示模式中 Edge type 的属性,例如`[e:follow{likeness:95}]`。 | + | 匹配边的属性 | ` MATCH (v:player{name:"Tim Duncan"})-[e:follow{degree:95}]->(v2) RETURN e`
`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 的属性,例如`[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` | 用户可以在模式中使用`:*`匹配定长路径。`hop`必须是一个非负整数。`e`的数据类型是列表。 | From 11b4eec5ad5d5b1ec714f4733a953b5fafade03b Mon Sep 17 00:00:00 2001 From: Abby <78209557+abby-cyber@users.noreply.github.com> Date: Wed, 23 Nov 2022 10:46:28 +0800 Subject: [PATCH 3/3] Update 6.cheatsheet-for-ngql-command.md --- docs-2.0/2.quick-start/6.cheatsheet-for-ngql-command.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs-2.0/2.quick-start/6.cheatsheet-for-ngql-command.md b/docs-2.0/2.quick-start/6.cheatsheet-for-ngql-command.md index 74e8859ed7f..b530b675d43 100644 --- a/docs-2.0/2.quick-start/6.cheatsheet-for-ngql-command.md +++ b/docs-2.0/2.quick-start/6.cheatsheet-for-ngql-command.md @@ -186,14 +186,14 @@ | 匹配点 | `(v)` | 用户可以在一对括号中使用自定义变量来表示模式中的点。例如`(v)`。 | | 匹配 Tag | `MATCH (v:player) RETURN v` | 用户可以在点的右侧用`:`表示模式中的 Tag。 | | 匹配多 Tag | `MATCH (v:player:team) RETURN v LIMIT 10` | 用户可以用英文冒号(:)匹配多 Tag 的点。 | - | 匹配点的属性 | `MATCH (v:player{name:"Tim Duncan"}) RETURN v`
`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 的右侧用`{: }`表示模式中点的属性;或者不指定 Tag 直接匹配点的属性。 | + | 匹配点的属性 | `MATCH (v:player{name:"Tim Duncan"}) RETURN v`

`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 的右侧用`{: }`表示模式中点的属性;或者不指定 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`
`MATCH ()<-[e]-() RETURN e LIMIT 3` | 除了用`--`、`-->`、`<--`表示未命名的边之外,用户还可以在方括号中使用自定义变量命名边。例如`-[e]-`。 | | 匹配 Edge type | `MATCH ()-[e:follow]->() RETURN e LIMIT 5` | 和点一样,用户可以用`:`表示模式中的 Edge type,例如`-[e:follow]-`。 | - | 匹配边的属性 | ` MATCH (v:player{name:"Tim Duncan"})-[e:follow{degree:95}]->(v2) RETURN e`
`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 的属性,例如`[e:follow{likeness:95}]`;或者不指定 Edge type 直接匹配边的属性。 | + | 匹配边的属性 | ` MATCH (v:player{name:"Tim Duncan"})-[e:follow{degree:95}]->(v2) RETURN e`

`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 的属性,例如`[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` | 用户可以在模式中使用`:*`匹配定长路径。`hop`必须是一个非负整数。`e`的数据类型是列表。 |