From bbae31cc45d269730c4dc2496c4e509b582ffe9b Mon Sep 17 00:00:00 2001 From: cooper-lzy <78672629+cooper-lzy@users.noreply.github.com> Date: Mon, 21 Jun 2021 15:40:42 +0800 Subject: [PATCH 1/3] add EMPTY --- .../16.subgraph-and-path/2.find-path.md | 16 +++++---- .../3.ngql-guide/5.operators/1.comparison.md | 34 ++++++++++++++++++- 2 files changed, 42 insertions(+), 8 deletions(-) diff --git a/docs-2.0/3.ngql-guide/16.subgraph-and-path/2.find-path.md b/docs-2.0/3.ngql-guide/16.subgraph-and-path/2.find-path.md index 27598ca59ac..32cbf3a968d 100644 --- a/docs-2.0/3.ngql-guide/16.subgraph-and-path/2.find-path.md +++ b/docs-2.0/3.ngql-guide/16.subgraph-and-path/2.find-path.md @@ -5,7 +5,7 @@ ## 语法 ```ngql -FIND { SHORTEST | ALL | NOLOOP } PATH FROM TO +FIND { SHORTEST | ALL | NOLOOP } PATH [WITH PROP] FROM TO OVER [REVERSELY | BIDIRECT] [] [UPTO STEPS] [| ORDER BY $-.path] [| LIMIT ]; ::= @@ -18,6 +18,8 @@ OVER [REVERSELY | BIDIRECT] [] [UPTO STEPS] [ - `NOLOOP`:查找非循环路径。 +- `WITH PROP`:展示点和边的属性。不添加本参数则隐藏属性。 + - ``:点ID列表.多个点用英文逗号(,)分隔。支持`$-`和`$var`。 - ``:边类型列表.多个边类型用英文逗号(,)分隔。`*`表示所有边类型。 @@ -58,12 +60,12 @@ nebula> FIND SHORTEST PATH FROM "player102" TO "team204" OVER *; ``` ```ngql -nebula> FIND SHORTEST PATH FROM "team204" TO "player100" OVER * REVERSELY; -+--------------------------------------------+ -| path | -+--------------------------------------------+ -| <("team204")<-[:serve@0 {}]-("player100")> | -+--------------------------------------------+ +nebula> FIND SHORTEST PATH WITH PROP FROM "team204" TO "player100" OVER * REVERSELY; ++--------------------------------------------------------------------------------------------------------------------------------------+ +| path | ++--------------------------------------------------------------------------------------------------------------------------------------+ +| <("team204" :team{name: "Spurs"})<-[:serve@0 {end_year: 2016, start_year: 1997}]-("player100" :player{age: 42, name: "Tim Duncan"})> | ++--------------------------------------------------------------------------------------------------------------------------------------+ ``` ```ngql diff --git a/docs-2.0/3.ngql-guide/5.operators/1.comparison.md b/docs-2.0/3.ngql-guide/5.operators/1.comparison.md index 07fbb761402..1eb44fd5734 100644 --- a/docs-2.0/3.ngql-guide/5.operators/1.comparison.md +++ b/docs-2.0/3.ngql-guide/5.operators/1.comparison.md @@ -17,6 +17,8 @@ Nebula Graph支持的比较符如下。 | `-` | 负数符号 | | `IS NULL` | 为NULL| | `IS NOT NULL` | 不为NULL | +| `IS EMPTY` | 不存在| +| `IS NOT EMPTY` | 存在 | 比较操作的结果是`true`或者`false`。 @@ -26,7 +28,9 @@ Nebula Graph支持的比较符如下。 ## OpenCypher兼容性 -Nebula Graph中,NULL的比较操作和openCypher不同,行为也可能会改变。在openCypher中,`IS [NOT] NULL`通常与`OPTIONAL MATCH`一起使用,但是nGQL不支持`OPTIONAL MATCH`。 +- `NULL`的比较操作和openCypher不同,行为也可能会改变。在openCypher中,`IS [NOT] NULL`通常与`OPTIONAL MATCH`一起使用,但是nGQL不支持`OPTIONAL MATCH`。 + +- openCypher中没有`EMPTY`,因此不支持在MATCH语句中使用`EMPTY`。 ## 示例 @@ -164,3 +168,31 @@ nebula> MATCH (n:player) \ +---------------+--------------------+-----------------+ ... ``` + +### `IS [NOT] EMPTY` + +```ngql +nebula> RETURN null IS EMPTY; ++---------------+ +| NULL IS EMPTY | ++---------------+ +| false | ++---------------+ + +nebula> RETURN "a" IS NOT EMPTY; ++------------------+ +| "a" IS NOT EMPTY | ++------------------+ +| true | ++------------------+ + +nebula> GO FROM "player100" OVER * WHERE $$.player.name IS NOT EMPTY YIELD follow._dst; ++-------------+ +| follow._dst | ++-------------+ +| "player125" | ++-------------+ +| "player101" | ++-------------+ + +``` From 52f9c7c401b1d52df787409aa4609c227c482675 Mon Sep 17 00:00:00 2001 From: cooper-lzy <78672629+cooper-lzy@users.noreply.github.com> Date: Tue, 22 Jun 2021 10:43:53 +0800 Subject: [PATCH 2/3] update --- docs-2.0/3.ngql-guide/5.operators/1.comparison.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs-2.0/3.ngql-guide/5.operators/1.comparison.md b/docs-2.0/3.ngql-guide/5.operators/1.comparison.md index 1eb44fd5734..1cb7ba20fc9 100644 --- a/docs-2.0/3.ngql-guide/5.operators/1.comparison.md +++ b/docs-2.0/3.ngql-guide/5.operators/1.comparison.md @@ -24,7 +24,9 @@ Nebula Graph支持的比较符如下。 !!! Note - 比较不同类型的值通常没有定义,结果可能是NULL或其它。 + - 比较不同类型的值通常没有定义,结果可能是`NULL`或其它。 + + - `EMPTY`当前仅用于判断,不支持函数或者运算操作,包括且不限于`GROUP BY`、`count()`、`sum()`、`max()`、`hash()`、`collect()`、`+`、`*`。 ## OpenCypher兼容性 From aaee1880520df8b61e2c8c363e12e61ea2375dbe Mon Sep 17 00:00:00 2001 From: cooper-lzy <78672629+cooper-lzy@users.noreply.github.com> Date: Tue, 22 Jun 2021 16:35:23 +0800 Subject: [PATCH 3/3] update --- .../3.ngql-guide/7.general-query-statements/3.go.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs-2.0/3.ngql-guide/7.general-query-statements/3.go.md b/docs-2.0/3.ngql-guide/7.general-query-statements/3.go.md index 64d3ad16079..62c2347a77c 100644 --- a/docs-2.0/3.ngql-guide/7.general-query-statements/3.go.md +++ b/docs-2.0/3.ngql-guide/7.general-query-statements/3.go.md @@ -262,3 +262,15 @@ nebula> $a = GO FROM "player100" OVER follow YIELD follow._src AS src, follow._d | "player100" | "player101" | "player100" | "player125" | +-------------+-------------+-------------+-------------+ ``` + +```ngql +# 在多个边上通过IS NOT EMPTY进行判断。 +nebula> GO FROM "player100" OVER * WHERE $$.player.name IS NOT EMPTY YIELD follow._dst; ++-------------+ +| follow._dst | ++-------------+ +| "player125" | ++-------------+ +| "player101" | ++-------------+ +```