diff --git a/docs-2.0/2.quick-start/1.quick-start-workflow.md b/docs-2.0/2.quick-start/1.quick-start-workflow.md index 7dd9e5431a..59895b4a8f 100644 --- a/docs-2.0/2.quick-start/1.quick-start-workflow.md +++ b/docs-2.0/2.quick-start/1.quick-start-workflow.md @@ -1,66 +1,66 @@ # 快速入门 -快速入门将介绍如何简单地使用Nebula Graph,包括部署、连接Nebula Graph,以及基础的增删改查操作。 +快速入门将介绍如何简单地使用 Nebula Graph,包括部署、连接 Nebula Graph,以及基础的增删改查操作。 ## 文档 -按照以下步骤可以快速部署并且使用Nebula Graph。 +按照以下步骤可以快速部署并且使用 Nebula Graph。 -1. [安装Nebula Graph](../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md) +1. [安装 Nebula Graph](../4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb.md) - 使用RPM或DEB文件可以快速安装Nebula Graph。其它部署方式及相应的准备工作请参见[安装部署](../4.deployment-and-installation/1.resource-preparations.md)。 + 使用 RPM 或 DEB 文件可以快速安装 Nebula Graph。其它部署方式及相应的准备工作请参见 [安装部署](../4.deployment-and-installation/1.resource-preparations.md)。 -2. [启动Nebula Graph](5.start-stop-service.md) +2. [启动 Nebula Graph](5.start-stop-service.md) - 部署好Nebula Graph之后需要启动Nebula Graph服务。 + 部署好 Nebula Graph 之后需要启动 Nebula Graph 服务。 -3. [连接Nebula Graph](3.connect-to-nebula-graph.md) +3. [连接 Nebula Graph](3.connect-to-nebula-graph.md) - 启动Nebula Graph服务后即可使用客户端连接。Nebula Graph支持多种客户端,快速入门中介绍使用原生命令行客户端Nebula Console连接Nebula Graph的方法。 + 启动 Nebula Graph 服务后即可使用客户端连接。Nebula Graph 支持多种客户端,快速入门中介绍使用原生命令行客户端 Nebula Console 连接 Nebula Graph 的方法。 -4. [使用常用nGQL(CRUD命令)](4.nebula-graph-crud.md) +4. [使用常用 nGQL(CRUD 命令)](4.nebula-graph-crud.md) - 连接到Nebula Graph之后即可使用nGQL(Nebula Graph Query Language)进行增删改查。 + 连接到 Nebula Graph 之后即可使用 nGQL(Nebula Graph Query Language)进行增删改查。 ## 视频 -用户也可以观看视频了解Nebula Graph的相关概念和操作。 +用户也可以观看视频了解 Nebula Graph 的相关概念和操作。 ### 热点视频 -* [听吴敏博士聊Nebula Graph](https://www.bilibili.com/video/BV14U4y157zc)(37分40秒) +* [听吴敏博士聊 Nebula Graph](https://www.bilibili.com/video/BV14U4y157zc)(37 分 40 秒) -* [Foesa小学姐课堂——Nebula Graph那些磨人的概念](https://www.bilibili.com/video/BV1Q5411K7Gg)(04分20秒) +* [Foesa 小学姐课堂——Nebula Graph 那些磨人的概念](https://www.bilibili.com/video/BV1Q5411K7Gg)(04 分 20 秒) -* [Foesa小学姐课堂——path 的三种类型](https://www.bilibili.com/video/BV1Uf4y1t72L)(03分09秒) +* [Foesa 小学姐课堂——path 的三种类型](https://www.bilibili.com/video/BV1Uf4y1t72L)(03 分 09 秒) ### 入门系列 -* [Nebula Graph Studio图探索](https://www.bilibili.com/video/BV1QN411Z7Vh)(03分23秒) +* [Nebula Graph Studio 图探索](https://www.bilibili.com/video/BV1QN411Z7Vh)(03 分 23 秒) -* [Nebula Exchange](https://www.bilibili.com/video/BV1Pq4y177D9)(03分08秒) +* [Nebula Exchange](https://www.bilibili.com/video/BV1Pq4y177D9)(03 分 08 秒) -* [Nebula Algorithm](https://www.bilibili.com/video/BV1fB4y1T7XK)(02分36秒) +* [Nebula Algorithm](https://www.bilibili.com/video/BV1fB4y1T7XK)(02 分 36 秒) -### NG辅导班 +### NG 辅导班 -* [第一篇:图世界的那些概念、术语](https://www.bilibili.com/video/BV17X4y1A7p9)(08分12秒) +* [第一篇:图世界的那些概念、术语](https://www.bilibili.com/video/BV17X4y1A7p9)(08 分 12 秒) -* [第二篇:如何更好地学习 Nebula Graph](https://www.bilibili.com/video/BV1aX4y1A7xd)(07分44秒) +* [第二篇:如何更好地学习 Nebula Graph](https://www.bilibili.com/video/BV1aX4y1A7xd)(07 分 44 秒) -请访问[Bilibili空间](https://space.bilibili.com/472621355),查看 30 多个,500 多分钟的系列视频。 +请访问 [Bilibili 空间](https://space.bilibili.com/472621355),查看 30 多个,500 多分钟的系列视频。 diff --git a/docs-2.0/2.quick-start/2.install-nebula-graph.md b/docs-2.0/2.quick-start/2.install-nebula-graph.md index ce99db09ed..0c83c32e63 100644 --- a/docs-2.0/2.quick-start/2.install-nebula-graph.md +++ b/docs-2.0/2.quick-start/2.install-nebula-graph.md @@ -1,4 +1,4 @@ -# 步骤1:安装Nebula Graph +# 步骤 1:安装 Nebula Graph {% include "/source_install-nebula-graph-by-rpm-or-deb.md" %} diff --git a/docs-2.0/2.quick-start/3.connect-to-nebula-graph.md b/docs-2.0/2.quick-start/3.connect-to-nebula-graph.md index a188805977..cdc162635d 100644 --- a/docs-2.0/2.quick-start/3.connect-to-nebula-graph.md +++ b/docs-2.0/2.quick-start/3.connect-to-nebula-graph.md @@ -1,4 +1,4 @@ -# 步骤3:连接Nebula Graph +# 步骤 3:连接 Nebula Graph {% include "/source_connect-to-nebula-graph.md" %} diff --git a/docs-2.0/2.quick-start/4.nebula-graph-crud.md b/docs-2.0/2.quick-start/4.nebula-graph-crud.md index a7eee37cc9..56f81284b5 100644 --- a/docs-2.0/2.quick-start/4.nebula-graph-crud.md +++ b/docs-2.0/2.quick-start/4.nebula-graph-crud.md @@ -1,16 +1,16 @@ -# 步骤4:使用常用nGQL(CRUD命令) +# 步骤 4:使用常用 nGQL(CRUD 命令) -本文介绍Nebula Graph查询语言的基础语法,包括用于Schema创建和常用增删改查操作的语句。 +本文介绍 Nebula Graph 查询语言的基础语法,包括用于 Schema 创建和常用增删改查操作的语句。 -如需了解更多语句的用法,参见[nGQL指南](../3.ngql-guide/1.nGQL-overview/1.overview.md)。 +如需了解更多语句的用法,参见 [nGQL 指南](../3.ngql-guide/1.nGQL-overview/1.overview.md)。 -## 图空间和Schema +## 图空间和 Schema -一个Nebula Graph实例由一个或多个图空间组成。每个图空间都是物理隔离的,用户可以在同一个实例中使用不同的图空间存储不同的数据集。 +一个 Nebula Graph 实例由一个或多个图空间组成。每个图空间都是物理隔离的,用户可以在同一个实例中使用不同的图空间存储不同的数据集。 ![Nebula Graph and graph spaces](https://docs-cdn.nebula-graph.com.cn/docs-2.0/2.quick-start/nebula-graph-instance-and-graph-spaces.png) -为了在图空间中插入数据,需要为图数据库定义一个Schema。Nebula Graph的Schema是由如下几部分组成。 +为了在图空间中插入数据,需要为图数据库定义一个 Schema。Nebula Graph 的 Schema 是由如下几部分组成。 | 组成部分 | 说明| | :--- | :--- | @@ -19,17 +19,17 @@ | 边(Edge) | 表示两个点之间**有方向**的关系。| | 边类型(Edge type) | 边的类型,定义了一组描述边的类型的属性。 | -更多信息,请参见[数据结构](../1.introduction/2.data-model.md)。 +更多信息,请参见 [数据结构](../1.introduction/2.data-model.md)。 本文将使用下图的数据集演示基础操作的语法。 ![The demo dataset](dataset-for-crud.png) -## 检查Nebula Graph集群的机器状态 +## 检查 Nebula Graph 集群的机器状态 !!! Note - 首先建议检查机器状态,确保所有的Storage服务连接到了Meta服务。执行命令`SHOW HOSTS`查看机器状态。 + 首先建议检查机器状态,确保所有的 Storage 服务连接到了 Meta 服务。执行命令`SHOW HOSTS`查看机器状态。 ```ngql nebula> SHOW HOSTS; @@ -43,13 +43,13 @@ nebula> SHOW HOSTS; +-------------+-----------+-----------+--------------+----------------------+------------------------+ ``` -在返回结果中,查看**Status**列,可以看到所有Storage服务都在线。 +在返回结果中,查看** Status **列,可以看到所有 Storage 服务都在线。 ### 异步实现创建和修改 !!! caution - Nebula Graph中执行如下创建和修改操作,是异步实现的。要在**下一个**心跳周期之后才能生效;否则访问会报错。 + Nebula Graph 中执行如下创建和修改操作,是异步实现的。要在**下一个**心跳周期之后才能生效;否则访问会报错。 - `CREATE SPACE` - `CREATE TAG` @@ -61,17 +61,17 @@ nebula> SHOW HOSTS; !!! Note - 默认心跳周期是10秒。修改心跳周期参数`heartbeat_interval_secs`,请参见[配置简介](../5.configurations-and-logs/1.configurations/1.configurations.md)。 + 默认心跳周期是 10 秒。修改心跳周期参数`heartbeat_interval_secs`,请参见 [配置简介](../5.configurations-and-logs/1.configurations/1.configurations.md)。 为确保数据同步,后续操作能顺利进行,可采取以下方法之一: - 执行`SHOW`或`DESCRIBE`命令检查相应对象的状态,确保创建或修改已完成。如果没有完成,请等待几秒重试。 -- 等待2个心跳周期(20秒)。 +- 等待 2 个心跳周期(20 秒)。 ## 创建和选择图空间 -### nGQL语法 +### nGQL 语法 - 创建图空间 @@ -84,7 +84,7 @@ nebula> SHOW HOSTS; [COMMENT = '']; ``` - 参数详情请参见[CREATE SPACE](../3.ngql-guide/9.space-statements/1.create-space.md)。 + 参数详情请参见 [CREATE SPACE](../3.ngql-guide/9.space-statements/1.create-space.md)。 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 8d185765aa..d3a042fb8f 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 @@ -1,4 +1,4 @@ -# nGQL命令汇总 +# nGQL 命令汇总 ## 函数 @@ -6,28 +6,28 @@ | 函数 | 说明 | | :-------------------------------------- | :----------------------------------------------------------- | - | double abs(double x) | 返回x的绝对值。 | - | double floor(double x) | 返回小于或等于x的最大整数。 | - | double ceil(double x) | 返回大于或等于x的最小整数。 | - | double round(double x) | 返回离x最近的整数值,如果x恰好在中间,则返回离0较远的整数。 | - | double sqrt(double x) | 返回x的平方根。 | - | double cbrt(double x) | 返回x的立方根。 | - | double hypot(double x, double y) | 返回直角三角形(直角边长为x和y)的斜边长。 | + | double abs(double x) | 返回 x 的绝对值。 | + | double floor(double x) | 返回小于或等于 x 的最大整数。 | + | double ceil(double x) | 返回大于或等于 x 的最小整数。 | + | double round(double x) | 返回离 x 最近的整数值,如果 x 恰好在中间,则返回离 0 较远的整数。 | + | double sqrt(double x) | 返回 x 的平方根。 | + | double cbrt(double x) | 返回 x 的立方根。 | + | double hypot(double x, double y) | 返回直角三角形(直角边长为 x 和 y)的斜边长。 | | double pow(double x, double y) | 返回$x^y$的值。 | | double exp(double x) | 返回$e^x$的值。 | | double exp2(double x) | 返回$2^x2$的值。 | - | double log(double x) | 返回以自然数e为底x的对数。 | - | double log2(double x) | 返回以2为底x的对数。 | - | double log10(double x) | 返回以10为底x的对数。 | - | double sin(double x) | 返回x的正弦值。 | - | double asin(double x) | 返回x的反正弦值。 | - | double cos(double x) | 返回x的余弦值。 | - | double acos(double x) | 返回x的反余弦值。 | - | double tan(double x) | 返回x的正切值。 | - | double atan(double x) | 返回x的反正切值。 | - | double rand() | 返回[0,1)内的随机浮点数。 | - | int rand32(int min, int max) | 返回`[min, max)`内的一个随机32位整数。 用户可以只传入一个参数,该参数会判定为`max`,此时`min`默认为`0`。 如果不传入参数,此时会从带符号的32位int范围内随机返回。 | - | int rand64(int min, int max) | 返回`[min, max)`内的一个随机64位整数。 用户可以只传入一个参数,该参数会判定为`max`,此时`min`默认为`0`。 如果不传入参数,此时会从带符号的64位int范围内随机返回。 | + | double log(double x) | 返回以自然数 e 为底 x 的对数。 | + | double log2(double x) | 返回以 2 为底 x 的对数。 | + | double log10(double x) | 返回以 10 为底 x 的对数。 | + | double sin(double x) | 返回 x 的正弦值。 | + | double asin(double x) | 返回 x 的反正弦值。 | + | double cos(double x) | 返回 x 的余弦值。 | + | double acos(double x) | 返回 x 的反余弦值。 | + | double tan(double x) | 返回 x 的正切值。 | + | double atan(double x) | 返回 x 的反正切值。 | + | double rand() | 返回 [0,1) 内的随机浮点数。 | + | int rand32(int min, int max) | 返回`[min, max)`内的一个随机 32 位整数。 用户可以只传入一个参数,该参数会判定为`max`,此时`min`默认为`0`。 如果不传入参数,此时会从带符号的 32 位 int 范围内随机返回。 | + | int rand64(int min, int max) | 返回`[min, max)`内的一个随机 64 位整数。 用户可以只传入一个参数,该参数会判定为`max`,此时`min`默认为`0`。 如果不传入参数,此时会从带符号的 64 位 int 范围内随机返回。 | | collect() | 将收集的所有值放在一个列表中。 | | avg() | 返回参数的平均值。 | | count() | 返回参数的数量。 | @@ -35,13 +35,13 @@ | min() | 返回参数的最小值。 | | std() | 返回参数的总体标准差。 | | sum() | 返回参数的和。 | - | bit_and() | 逐位做AND操作。 | - | bit_or() | 逐位做OR操作。 | - | bit_xor() | 逐位做XOR操作。 | + | bit_and() | 逐位做 AND 操作。 | + | bit_or() | 逐位做 OR 操作。 | + | bit_xor() | 逐位做 XOR 操作。 | | int size() | 返回列表或映射中元素的数量。 | - | int range(int start, int end, int step) | 返回`[start,end]`中指定步长的值组成的列表。步长`step`默认为1。 | - | int sign(double x) | 返回x的正负号。 如果x为`0`,则返回`0`。 如果x为负数,则返回`-1`。 如果x为正数,则返回`1`。 | - | double e() | 返回自然对数的底e(2.718281828459045)。 | + | int range(int start, int end, int step) | 返回`[start,end]`中指定步长的值组成的列表。步长`step`默认为 1。 | + | int sign(double x) | 返回 x 的正负号。 如果 x 为`0`,则返回`0`。 如果 x 为负数,则返回`-1`。 如果 x 为正数,则返回`1`。 | + | double e() | 返回自然对数的底 e(2.718281828459045)。 | | double pi() | 返回数学常数π(3.141592653589793)。 | | double radians() | 将角度转换为弧度。`radians(180)`返回`3.141592653589793`。 | @@ -51,7 +51,7 @@ | 函数 | 说明 | | :---------------------------------------------- | :----------------------------------------------------------- | - | int strcasecmp(string a, string b) | 比较两个字符串(不区分大小写)。当a=b时,返回0,当a>b是,返回大于0的数,当ab 是,返回大于 0 的数,当 a`count()`返回总行数(包括NULL)。
`count(expr)`返回满足表达式的非空值的总数。
`count()`和`size()`是不同的。 | + | count() | 语法:`count({expr | *})` 。
`count()`返回总行数(包括 NULL)。
`count(expr)`返回满足表达式的非空值的总数。
`count()`和`size()`是不同的。 | -* [collect函数](../3.ngql-guide/6.functions-and-expressions/10.collect.md) +* [collect 函数](../3.ngql-guide/6.functions-and-expressions/10.collect.md) | 函数 | 说明 | | :-------- | :----------------------------------------------------------- | @@ -134,7 +126,7 @@ -* [reduce函数](../3.ngql-guide/6.functions-and-expressions/11.reduce.md) +* [reduce 函数](../3.ngql-guide/6.functions-and-expressions/11.reduce.md) | 函数 | 语法 | 说明 | | :------- | :-------------------------------------------------------- | ------------------------------------------------------------ | @@ -142,23 +134,21 @@ -* [hash函数](../3.ngql-guide/6.functions-and-expressions/12.hash.md) +* [hash 函数](../3.ngql-guide/6.functions-and-expressions/12.hash.md) | 函数 | 说明 | | :----- | :----------------------------------------------------------- | - | hash() | `hash()`函数返回参数的哈希值。其参数可以是数字、字符串、列表、布尔值、NULL等类型的值,或者计算结果为这些类型的表达式。`hash()`函数采用MurmurHash2算法,种子(seed)为`0xc70f6907UL`。用户可以在[`MurmurHash2.h`](https://github.com/vesoft-inc/nebula/blob/master/src/common/base/MurmurHash2.h)中查看其源代码。 | + | hash() | `hash()`函数返回参数的哈希值。其参数可以是数字、字符串、列表、布尔值、NULL 等类型的值,或者计算结果为这些类型的表达式。`hash()`函数采用 MurmurHash2 算法,种子(seed)为`0xc70f6907UL`。用户可以在 [`MurmurHash2.h`](https://github.com/vesoft-inc/nebula/blob/master/src/common/base/MurmurHash2.h) 中查看其源代码。 | -* [concat函数](../3.ngql-guide/6.functions-and-expressions/13.concat.md) +* [concat 函数](../3.ngql-guide/6.functions-and-expressions/13.concat.md) | 函数 | 说明 | | :------- | :----------------------------------------------------------- | | concat() | `concat()`函数至少需要两个或以上字符串参数,并将所有参数连接成一个字符串。
语法:`concat(string1,string2,...)` | - - -* [concat_ws函数](../3.ngql-guide/6.functions-and-expressions/13.concat.md) +* [concat_ws 函数](../3.ngql-guide/6.functions-and-expressions/13.concat.md) | 函数 | 说明 | | ----------- | ------------------------------------------------------------ | @@ -182,11 +172,9 @@ | none() | 如果指定的谓词不适用于列表中的任何一个元素,则返回`true`,否则返回`false`。 | | single() | 如果指定的谓词适用于列表中的唯一一个元素,则返回`true`,否则返回`false`。 | +* [CASE 表达式](../3.ngql-guide/6.functions-and-expressions/5.case-expressions.md) - -* [CASE表达式](../3.ngql-guide/6.functions-and-expressions/5.case-expressions.md) - - `CASE`表达式使用条件来过滤nGQL查询语句的结果,常用于`YIELD`和`RETURN`子句中。`CASE`表达式会遍历所有条件,并在满足第一个条件时停止读取后续条件,然后返回结果。如果不满足任何条件,将通过`ELSE`子句返回结果。如果没有`ELSE`子句且不满足任何条件,则返回`NULL`。 + `CASE`表达式使用条件来过滤 nGQL 查询语句的结果,常用于`YIELD`和`RETURN`子句中。`CASE`表达式会遍历所有条件,并在满足第一个条件时停止读取后续条件,然后返回结果。如果不满足任何条件,将通过`ELSE`子句返回结果。如果没有`ELSE`子句且不满足任何条件,则返回`NULL`。 语法: @@ -205,8 +193,6 @@ | `result` | 如果`value`匹配`comparer`,则返回该`result`。 | | `default` | 如果没有条件匹配,则返回该`default`。 | - - ## 通用查询语句 * [MATCH](../3.ngql-guide/7.general-query-statements/2.match.md) @@ -218,33 +204,31 @@ | 模式 | 示例 | 说明 | | --------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | 匹配点 | `(v)` | 用户可以在一对括号中使用自定义变量来表示模式中的点。例如`(v)`。 | - | 匹配Tag | `MATCH (v:player) RETURN v` | 用户可以在点的右侧用`:`表示模式中的Tag。 | - | 匹配点的属性 | `MATCH (v:player{name:"Tim Duncan"}) RETURN v` | 用户可以在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]`。 | + | 匹配 Tag | `MATCH (v:player) RETURN v` | 用户可以在点的右侧用`:`表示模式中的 Tag。 | + | 匹配点的属性 | `MATCH (v:player{name:"Tim Duncan"}) RETURN v` | 用户可以在 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.name AS Name` | 用户可以使用`--`符号表示两个方向的边,并匹配这些边连接的点。用户可以在`--`符号上增加`<`或`>`符号指定边的方向。 | | 匹配路径 | `MATCH p=(v:player{name:"Tim Duncan"})-->(v2) RETURN p` | 连接起来的点和边构成了路径。用户可以使用自定义变量命名路径。 | | 匹配边 | `MATCH (v:player{name:"Tim Duncan"})-[e]-(v2) RETURN e` | 除了用`--`、`-->`、`<--`表示未命名的边之外,用户还可以在方括号中使用自定义变量命名边。例如`-[e]-`。 | - | 匹配Edge type | `MATCH ()-[e:follow]-() RETURN e` | 和点一样,用户可以用`:`表示模式中的Edge type,例如`-[e:follow]-`。 | - | 匹配边的属性 | ` MATCH (v:player{name:"Tim Duncan"})-[e:follow{degree:95}]->(v2) RETURN e` | 用户可以用`{: }`表示模式中Edge type的属性,例如`[e:follow{likeness:95}]`。 | - | 匹配多个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]`。 | + | 匹配 Edge type | `MATCH ()-[e:follow]-() RETURN e` | 和点一样,用户可以用`:`表示模式中的 Edge type,例如`-[e:follow]-`。 | + | 匹配边的属性 | ` MATCH (v:player{name:"Tim Duncan"})-[e:follow{degree:95}]->(v2) RETURN e` | 用户可以用`{: }`表示模式中 Edge type 的属性,例如`[e:follow{likeness:95}]`。 | + | 匹配多个 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`必须是一个非负整数。 | - | 匹配变长路径 | `MATCH p=(v:player{name:"Tim Duncan"})-[e:follow*1..3]->(v2) RETURN v2 AS Friends` | `minHop`:可选项。表示路径的最小长度。`minHop`必须是一个非负整数,默认值为1。
`maxHop`:必选项。表示路径的最大长度。`maxHop`必须是一个非负整数,没有默认值。 | - | 匹配多个Edge type的变长路径 | `MATCH p=(v:player{name:"Tim Duncan"})-[e:follow | serve*2]->(v2) RETURN DISTINCT v2` | 用户可以在变长或定长模式中指定多个Edge type。`hop`、`minHop`和`maxHop`对所有Edge type都生效。 | + | 匹配变长路径 | `MATCH p=(v:player{name:"Tim Duncan"})-[e:follow*1..3]->(v2) RETURN v2 AS Friends` | `minHop`:可选项。表示路径的最小长度。`minHop`必须是一个非负整数,默认值为 1。
`maxHop`:必选项。表示路径的最大长度。`maxHop`必须是一个非负整数,没有默认值。 | + | 匹配多个 Edge type 的变长路径 | `MATCH p=(v:player{name:"Tim Duncan"})-[e:follow | serve*2]->(v2) RETURN DISTINCT v2` | 用户可以在变长或定长模式中指定多个 Edge type。`hop`、`minHop`和`maxHop`对所有 Edge type 都生效。 | | 检索点或边的信息 | `MATCH (v:player{name:"Tim Duncan"}) RETURN v`
`MATCH (v:player{name:"Tim Duncan"})-[e]->(v2) RETURN e` | 使用`RETURN { | }`检索点或边的所有信息。 | - | 检索点ID | `MATCH (v:player{name:"Tim Duncan"}) RETURN id(v)` | 使用`id()`函数检索点ID。 | - | 检索Tag | `MATCH (v:player{name:"Tim Duncan"}) RETURN labels(v)` | 使用`labels()`函数检索点上的Tag列表。
检索列表`labels(v)`中的第N个元素,可以使用`labels(v)[n-1]`。 | + | 检索点 ID | `MATCH (v:player{name:"Tim Duncan"}) RETURN id(v)` | 使用`id()`函数检索点 ID。 | + | 检索 Tag | `MATCH (v:player{name:"Tim Duncan"}) RETURN labels(v)` | 使用`labels()`函数检索点上的 Tag 列表。
检索列表`labels(v)`中的第 N 个元素,可以使用`labels(v)[n-1]`。 | | 检索点或边的单个属性 | `MATCH (v:player{name:"Tim Duncan"}) RETURN v.age` | 使用`RETURN { | }.`检索单个属性。
使用`AS`设置属性的别名。 | | 检索点或边的所有属性 | `MATCH p=(v:player{name:"Tim Duncan"})-[]->(v2) RETURN properties(v2)` | 使用`properties()`函数检索点或边的所有属性。 | - | 检索Edge type | `MATCH p=(v:player{name:"Tim Duncan"})-[e]->() RETURN DISTINCT type(e)` | 使用`type()`函数检索匹配的Edge type。 | + | 检索 Edge type | `MATCH p=(v:player{name:"Tim Duncan"})-[e]->() RETURN DISTINCT type(e)` | 使用`type()`函数检索匹配的 Edge type。 | | 检索路径 | `MATCH p=(v:player{name:"Tim Duncan"})-[*3]->() RETURN p` | 使用`RETURN `检索匹配路径的所有信息。 | | 检索路径中的点 | `MATCH p=(v:player{name:"Tim Duncan"})-[]->(v2) RETURN nodes(p)` | 使用`nodes()`函数检索路径中的所有点。 | | 检索路径中的边 | `MATCH p=(v:player{name:"Tim Duncan"})-[]->(v2) RETURN relationships(p)` | 使用`relationships()`函数检索路径中的所有边。 | | 检索路径长度 | `MATCH p=(v:player{name:"Tim Duncan">})-[*..2]->(v2) RETURN p AS Paths, length(p) AS Length` | 使用`length()`函数检索路径的长度。 | - - * [LOOKUP](../3.ngql-guide/7.general-query-statements/5.lookup.md) ``` @@ -255,12 +239,12 @@ | 模式 | 示例 | 说明 | | ------------------- | ------------------------------------------------------------ | ---------------------------------------------- | - | 检索点 | `LOOKUP ON player WHERE player.name == "Tony Parker" YIELD player.name AS name, player.age AS age` | 返回Tag为`player`且`name`为`Tony Parker`的点。 | - | 检索边 | `LOOKUP ON follow WHERE follow.degree == 90 YIELD follow.degree` | 返回Edge type为`follow`且`degree`为`90`的边。 | - | 通过Tag列出所有点 | `LOOKUP ON player` | 查找所有Tag为`player`的点 VID。 | - | 通过Edge type列出边 | `LOOKUP ON like` | 查找Edge type为`like`的所有边的信息。 | - | 统计点 | `LOOKUP ON player | YIELD COUNT(*) AS Player_Number` | 统计Tag为`player`的点。 | - | 统计边 | `LOOKUP ON like | YIELD COUNT(*) AS Like_Number` | 统计Edge type为`like`的边。 | + | 检索点 | `LOOKUP ON player WHERE player.name == "Tony Parker" YIELD player.name AS name, player.age AS age` | 返回 Tag 为`player`且`name`为`Tony Parker`的点。 | + | 检索边 | `LOOKUP ON follow WHERE follow.degree == 90 YIELD follow.degree` | 返回 Edge type 为`follow`且`degree`为`90`的边。 | + | 通过 Tag 列出所有点 | `LOOKUP ON player` | 查找所有 Tag 为`player`的点 VID。 | + | 通过 Edge type 列出边 | `LOOKUP ON like` | 查找 Edge type 为`like`的所有边的信息。 | + | 统计点 | `LOOKUP ON player | YIELD COUNT(*) AS Player_Number` | 统计 Tag 为`player`的点。 | + | 统计边 | `LOOKUP ON like | YIELD COUNT(*) AS Like_Number` | 统计 Edge type 为`like`的边。 | @@ -278,17 +262,15 @@ | 示例 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------- | - | `GO FROM "player102" OVER serve` | 返回player102所属队伍。 | - | `GO 2 STEPS FROM "player102" OVER follow` | 返回距离player102两跳的朋友。 | + | `GO FROM "player102" OVER serve` | 返回 player102 所属队伍。 | + | `GO 2 STEPS FROM "player102" OVER follow` | 返回距离 player102 两跳的朋友。 | | `GO FROM "player100", "player102" OVER serve WHERE properties(edge).start_year > 1995 YIELD DISTINCT properties($$).name AS team_name, properties(edge).start_year AS start_year, properties($^).name AS player_name` | 添加过滤条件。 | - | `GO FROM "player100" OVER follow, serve YIELD properties(edge).degree, properties(edge).start_year` | 遍历多个Edge type。属性没有值时,会显示`UNKNOWN_PROP`。 | - | `GO FROM "player100" OVER follow REVERSELY YIELD src(edge) AS destination` | 返回player100入方向的邻居点。 | - | `GO FROM "player100" OVER follow REVERSELY YIELD src(edge) AS id | GO FROM $-.id OVER serve WHERE properties($^).age > 20 YIELD properties($^).name AS FriendOf, properties($$).name AS Team` | 查询player100的朋友和朋友所属队伍。 | - | `GO FROM "player102" OVER follow YIELD dst(edge) AS both` | 返回player102所有邻居点。 | + | `GO FROM "player100" OVER follow, serve YIELD properties(edge).degree, properties(edge).start_year` | 遍历多个 Edge type。属性没有值时,会显示`UNKNOWN_PROP`。 | + | `GO FROM "player100" OVER follow REVERSELY YIELD src(edge) AS destination` | 返回 player100 入方向的邻居点。 | + | `GO FROM "player100" OVER follow REVERSELY YIELD src(edge) AS id | GO FROM $-.id OVER serve WHERE properties($^).age > 20 YIELD properties($^).name AS FriendOf, properties($$).name AS Team` | 查询 player100 的朋友和朋友所属队伍。 | + | `GO FROM "player102" OVER follow YIELD dst(edge) AS both` | 返回 player102 所有邻居点。 | | `GO 2 STEPS FROM "player100" OVER follow YIELD src(edge) AS src, dst(edge) AS dst, properties($$).age AS age | GROUP BY $-.dst YIELD $-.dst AS dst, collect_set($-.src) AS src, collect($-.age) AS age` | 根据年龄分组。 | - - * [FETCH](../3.ngql-guide/7.general-query-statements/4.fetch.md) ``` @@ -299,17 +281,17 @@ | 示例 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------------ | - | `FETCH PROP ON player "player100"` | 在`FETCH`语句中指定Tag获取对应点的属性值。 | + | `FETCH PROP ON player "player100"` | 在`FETCH`语句中指定 Tag 获取对应点的属性值。 | | `FETCH PROP ON player "player100" YIELD player.name AS name` | 使用`YIELD`子句指定返回的属性。 | - | `FETCH PROP ON player "player101", "player102", "player103"` | 指定多个点ID获取多个点的属性值,点之间用英文逗号(,)分隔。 | - | `FETCH PROP ON player, t1 "player100", "player103"` | 在`FETCH`语句中指定多个Tag获取属性值。Tag之间用英文逗号(,)分隔。 | + | `FETCH PROP ON player "player101", "player102", "player103"` | 指定多个点 ID 获取多个点的属性值,点之间用英文逗号(,)分隔。 | + | `FETCH PROP ON player, t1 "player100", "player103"` | 在`FETCH`语句中指定多个 Tag 获取属性值。Tag 之间用英文逗号(,)分隔。 | | `FETCH PROP ON * "player100", "player106", "team200"` | 在`FETCH`语句中使用`*`获取当前图空间所有标签里,点的属性值。 | | `FETCH PROP ON serve "player102" -> "player106" YIELD dst(edge)` | 语法:`FETCH PROP ON -> [@] [, -> ...] [YIELD ]` | - | `FETCH PROP ON serve "player100" -> "team204"` | 获取连接player100和team204的边serve的所有属性值。 | + | `FETCH PROP ON serve "player100" -> "team204"` | 获取连接 player100 和 team204 的边 serve 的所有属性值。 | | `FETCH PROP ON serve "player100" -> "team204" YIELD serve.start_year` | 使用`YIELD`子句指定返回的属性。 | - | `FETCH PROP ON serve "player100" -> "team204", "player133" -> "team202"` | 指定多个边模式(` -> [@]`)获取多个边的属性值。模式之间用英文逗号(,)分隔。 | - | `FETCH PROP ON serve "player100" -> "team204"@1` | 要获取rank不为0的边,请在FETCH语句中设置rank。 | - | `GO FROM "player101" OVER follow YIELD follow._src AS s, follow._dst AS d | FETCH PROP ON follow $-.s -> $-.d YIELD follow.degree` | 返回从点player101开始的follow边的degree值。 | + | `FETCH PROP ON serve "player100" -> "team204", "player133" -> "team202"` | 指定多个边模式 (` -> [@]`) 获取多个边的属性值。模式之间用英文逗号(,)分隔。 | + | `FETCH PROP ON serve "player100" -> "team204"@1` | 要获取 rank 不为 0 的边,请在 FETCH 语句中设置 rank。 | + | `GO FROM "player101" OVER follow YIELD follow._src AS s, follow._dst AS d | FETCH PROP ON follow $-.s -> $-.d YIELD follow.degree` | 返回从点 player101 开始的 follow 边的 degree 值。 | | `$var = GO FROM "player101" OVER follow YIELD follow._src AS s, follow._dst AS d; FETCH PROP ON follow $var.s -> $var.d YIELD follow.degree` | 自定义变量构建查询。 | @@ -335,100 +317,87 @@ | [SHOW CHARSET](../3.ngql-guide/7.general-query-statements/6.show/1.show-charset.md) | `SHOW CHARSET` | `SHOW CHARSET` | 显示当前的字符集。 | | [SHOW COLLATION](../3.ngql-guide/7.general-query-statements/6.show/2.show-collation.md) | `SHOW COLLATION` | `SHOW COLLATION` | 显示当前的排序规则。 | | [SHOW CREATE SPACE](../3.ngql-guide/7.general-query-statements/6.show/4.show-create-space.md) | `SHOW CREATE SPACE ` | `SHOW CREATE SPACE basketballplayer` | 显示指定图空间的创建语句。 | - | [SHOW CREATE TAG/EDGE](../3.ngql-guide/7.general-query-statements/6.show/5.show-create-tag-edge.md) | `SHOW CREATE {TAG | EDGE }` | `SHOW CREATE TAG player` | 显示指定Tag/Edge type的基本信息。 | - | [SHOW HOSTS](../3.ngql-guide/7.general-query-statements/6.show/6.show-hosts.md) | `SHOW HOSTS [GRAPH | STORAGE | META]` | `SHOW HOSTS`
`SHOW HOSTS GRAPH` | 显示Graph、Storage、Meta服务主机信息、版本信息。 | + | [SHOW CREATE TAG/EDGE](../3.ngql-guide/7.general-query-statements/6.show/5.show-create-tag-edge.md) | `SHOW CREATE {TAG | EDGE }` | `SHOW CREATE TAG player` | 显示指定 Tag/Edge type 的基本信息。 | + | [SHOW HOSTS](../3.ngql-guide/7.general-query-statements/6.show/6.show-hosts.md) | `SHOW HOSTS [GRAPH | STORAGE | META]` | `SHOW HOSTS`
`SHOW HOSTS GRAPH` | 显示 Graph、Storage、Meta 服务主机信息、版本信息。 | | [SHOW INDEX STATUS](../3.ngql-guide/7.general-query-statements/6.show/7.show-index-status.md) | `SHOW {TAG | EDGE} INDEX STATUS` | `SHOW TAG INDEX STATUS` | 重建原生索引的作业状态,以便确定重建索引是否成功。 | - | [SHOW INDEXES](../3.ngql-guide/7.general-query-statements/6.show/8.show-indexes.md) | `SHOW {TAG | EDGE} INDEXES` | `SHOW TAG INDEXES` | 列出当前图空间内的所有Tag和Edge type(包括属性)的索引。 | + | [SHOW INDEXES](../3.ngql-guide/7.general-query-statements/6.show/8.show-indexes.md) | `SHOW {TAG | EDGE} INDEXES` | `SHOW TAG INDEXES` | 列出当前图空间内的所有 Tag 和 Edge type(包括属性)的索引。 | | [SHOW PARTS](../3.ngql-guide/7.general-query-statements/6.show/9.show-parts.md) | `SHOW PARTS []` | `SHOW PARTS` | 显示图空间中指定分片或所有分片的信息。 | | [SHOW ROLES](../3.ngql-guide/7.general-query-statements/6.show/10.show-roles.md) | `SHOW ROLES IN ` | `SHOW ROLES in basketballplayer` | 显示分配给用户的角色信息。 | | [SHOW SNAPSHOTS](../3.ngql-guide/7.general-query-statements/6.show/11.show-snapshots.md) | `SHOW SNAPSHOTS` | `SHOW SNAPSHOTS` | 显示所有快照信息。 | | [SHOW SPACES](../3.ngql-guide/7.general-query-statements/6.show/12.show-spaces.md) | `SHOW SPACES` | `SHOW SPACES` | 显示现存的图空间。 | | [SHOW STATS](../3.ngql-guide/7.general-query-statements/6.show/14.show-stats.md) | `SHOW STATS` | `SHOW STATS` | 显示最近`STATS`作业收集的图空间统计信息。 | - | [SHOW TAGS/EDGES](../3.ngql-guide/7.general-query-statements/6.show/15.show-tags-edges.md) | `SHOW TAGS | EDGES` | `SHOW TAGS`、`SHOW EDGES` | 显示当前图空间内的所有Tag/Edge type。 | + | [SHOW TAGS/EDGES](../3.ngql-guide/7.general-query-statements/6.show/15.show-tags-edges.md) | `SHOW TAGS | EDGES` | `SHOW TAGS`、`SHOW EDGES` | 显示当前图空间内的所有 Tag/Edge type。 | | [SHOW USERS](../3.ngql-guide/7.general-query-statements/6.show/16.show-users.md) | `SHOW USERS` | `SHOW USERS` | 显示用户信息。 | | [SHOW SESSIONS](../3.ngql-guide/7.general-query-statements/6.show/17.show-sessions.md) | `SHOW SESSIONS ` | ` SHOW SESSIONS` | 显示所有会话信息。 | - | [SHOW SESSIONS](../3.ngql-guide/7.general-query-statements/6.show/17.show-sessions.md) | `SHOW SESSION ` | `SHOW SESSION 1623304491050858` | 指定会话ID进行查看。 | - | [SHOW QUERIES](../3.ngql-guide/7.general-query-statements/6.show/18.show-queries.md) | `SHOW [ALL] QUERIES` | `SHOW QUERIES` | 查看当前Session中正在执行的查询请求信息。 | - | [SHOW META LEADER](../3.ngql-guide/7.general-query-statements/6.show/19.show-meta-leader.md) | `SHOW META LEADER` | `SHOW META LEADER` | 显示当前Meta集群的leader信息。 | - + | [SHOW SESSIONS](../3.ngql-guide/7.general-query-statements/6.show/17.show-sessions.md) | `SHOW SESSION ` | `SHOW SESSION 1623304491050858` | 指定会话 ID 进行查看。 | + | [SHOW QUERIES](../3.ngql-guide/7.general-query-statements/6.show/18.show-queries.md) | `SHOW [ALL] QUERIES` | `SHOW QUERIES` | 查看当前 Session 中正在执行的查询请求信息。 | + | [SHOW META LEADER](../3.ngql-guide/7.general-query-statements/6.show/19.show-meta-leader.md) | `SHOW META LEADER` | `SHOW META LEADER` | 显示当前 Meta 集群的 leader 信息。 | ## 子句和选项 | 子句 | 语法 | 示例 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| [GROUP BY](../3.ngql-guide/8.clauses-and-options/group-by.md) | ` GROUP BY YIELD , ` | `GO FROM "player100" OVER follow BIDIRECT YIELD $$.player.name as Name | GROUP BY $-.Name YIELD $-.Name as Player, count(*) AS Name_Count` | 查找所有连接到player100的点,并根据他们的姓名进行分组,返回姓名的出现次数。 | -| [LIMIT](../3.ngql-guide/8.clauses-and-options/limit.md) | `YIELD [| LIMIT [,] ]` | `O FROM "player100" OVER follow REVERSELY YIELD $$.player.name AS Friend, $$.player.age AS Age | ORDER BY $-.Age, $-.Friend | LIMIT 1, 3` | 从排序结果中返回第2行开始的3行数据。 | +| [GROUP BY](../3.ngql-guide/8.clauses-and-options/group-by.md) | ` GROUP BY YIELD , ` | `GO FROM "player100" OVER follow BIDIRECT YIELD $$.player.name as Name | GROUP BY $-.Name YIELD $-.Name as Player, count(*) AS Name_Count` | 查找所有连接到 player100 的点,并根据他们的姓名进行分组,返回姓名的出现次数。 | +| [LIMIT](../3.ngql-guide/8.clauses-and-options/limit.md) | `YIELD [| LIMIT [,] ]` | `O FROM "player100" OVER follow REVERSELY YIELD $$.player.name AS Friend, $$.player.age AS Age | ORDER BY $-.Age, $-.Friend | LIMIT 1, 3` | 从排序结果中返回第 2 行开始的 3 行数据。 | | [SKIP](../3.ngql-guide/8.clauses-and-options/limit.md) | `RETURN [SKIP ] [LIMIT ]` | `MATCH (v:player{name:"Tim Duncan"}) --> (v2) RETURN v2.name AS Name, v2.age AS Age ORDER BY Age DESC SKIP 1` | 用户可以单独使用`SKIP `设置偏移量,后面不需要添加`LIMIT `。 | | [ORDER BY](../3.ngql-guide/8.clauses-and-options/order-by.md) | ` ORDER BY [ASC | DESC] [, [ASC | DESC] ...]` | `FETCH PROP ON player "player100", "player101", "player102", "player103" YIELD player.age AS age, player.name AS name | ORDER BY $-.age ASC, $-.name DESC` | `ORDER BY`子句指定输出结果的排序规则。 | | [RETURN](../3.ngql-guide/8.clauses-and-options/return.md) | `RETURN {||.|.|...}` | `MATCH (v:player) RETURN v.name, v.age LIMIT 3` | 返回点的属性为`name`和`age`的前三行值。 | -| [TTL](../3.ngql-guide/8.clauses-and-options/ttl-options.md) | ``CREATE TAG ( , , ...) ttl_duration= , ttl_col = `` | `CREATE TAG t2(a int, b int, c string) ttl_duration= 100, ttl_col = "a"` | 创建Tag并设置TTL选项。 | +| [TTL](../3.ngql-guide/8.clauses-and-options/ttl-options.md) | ``CREATE TAG ( , , ...) ttl_duration= , ttl_col = `` | `CREATE TAG t2(a int, b int, c string) ttl_duration= 100, ttl_col = "a"` | 创建 Tag 并设置 TTL 选项。 | | [WHERE](../3.ngql-guide/8.clauses-and-options/where.md) | `WHERE {. {>|==|<|...} ...}` | `MATCH (v:player) WHERE v.name == "Tim Duncan" XOR (v.age < 30 AND v.name == "Yao Ming") OR NOT (v.name == "Yao Ming" OR v.name == "Tim Duncan") RETURN v.name, v.age` | `WHERE`子句可以根据条件过滤输出结果,通常用于`GO`和`LOOKUP`语句,`MATCH`和`WITH`语句。 | -| [YIELD](../3.ngql-guide/8.clauses-and-options/yield.md) | `YIELD [DISTINCT] [AS ] [, [AS ] ...] [WHERE ];` | `GO FROM "player100" OVER follow YIELD dst(edge) AS ID | FETCH PROP ON player $-.ID YIELD player.age AS Age | YIELD AVG($-.Age) as Avg_age, count(*)as Num_friends` | 查找player100关注的player,并计算他们的平均年龄。 | +| [YIELD](../3.ngql-guide/8.clauses-and-options/yield.md) | `YIELD [DISTINCT] [AS ] [, [AS ] ...] [WHERE ];` | `GO FROM "player100" OVER follow YIELD dst(edge) AS ID | FETCH PROP ON player $-.ID YIELD player.age AS Age | YIELD AVG($-.Age) as Avg_age, count(*)as Num_friends` | 查找 player100 关注的 player,并计算他们的平均年龄。 | | [WITH](../3.ngql-guide/8.clauses-and-options/with.md) | `MATCH $expressions WITH {nodes()|labels()|...}` | `MATCH p=(v:player{name:"Tim Duncan"})--() WITH nodes(p) AS n UNWIND n AS n1 RETURN DISTINCT n1` | `WITH`子句可以获取并处理查询前半部分的结果,并将处理结果作为输入传递给查询的后半部分。 | - - ## 图空间语句 | 语句 | 语法 | 示例 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------------ | ----------------------------------------------------- | ------------------------------------------------------------ | | [CREATE SPACE](../3.ngql-guide/9.space-statements/1.create-space.md) | `CREATE SPACE [IF NOT EXISTS] ( [partition_num = ,] [replica_factor = ,] vid_type = {FIXED_STRING()| INT[64]} ) [COMMENT = '']` | `CREATE SPACE my_space_1 (vid_type=FIXED_STRING(30))` | 创建一个新的图空间。 | -| [CREATE SPACE](../3.ngql-guide/9.space-statements/1.create-space.md) | `CREATE SPACE AS ` | `CREATE SPACE my_space_4 as my_space_3` | 克隆现有图空间的Schema | +| [CREATE SPACE](../3.ngql-guide/9.space-statements/1.create-space.md) | `CREATE SPACE AS ` | `CREATE SPACE my_space_4 as my_space_3` | 克隆现有图空间的 Schema | | [USE](../3.ngql-guide/9.space-statements/2.use-space.md) | `USE ` | `USE space1` | 指定一个图空间,或切换到另一个图空间,将其作为后续查询的工作空间。 | -| [SHOW SPACES](../3.ngql-guide/9.space-statements/3.show-spaces.md) | `SHOW SPACES` | `SHOW SPACES` | 列出Nebula Graph示例中的所有图空间。 | +| [SHOW SPACES](../3.ngql-guide/9.space-statements/3.show-spaces.md) | `SHOW SPACES` | `SHOW SPACES` | 列出 Nebula Graph 示例中的所有图空间。 | | [DESCRIBE SPACE](../3.ngql-guide/9.space-statements/4.describe-space.md) | `DESC[RIBE] SPACE ` | `DESCRIBE SPACE basketballplayer` | 显示指定图空间的信息。 | | [DROP SPACE](../3.ngql-guide/9.space-statements/5.drop-space.md) | `DROP SPACE [IF EXISTS] ` | `DROP SPACE basketballplayer` | 删除指定图空间的所有内容。 | - - -## TAG语句 +## TAG 语句 | 语句 | 语法 | 示例 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| [CREATE TAG](../3.ngql-guide/10.tag-statements/1.create-tag.md) | `CREATE TAG [IF NOT EXISTS] ( [NULL | NOT NULL] [DEFAULT ] [COMMENT ''] [{, [NULL | NOT NULL] [DEFAULT ] [COMMENT '']} ...] ) [TTL_DURATION = ] [TTL_COL = ] [COMMENT = ''] ` | `CREATE TAG woman(name string, age int, married bool, salary double, create_time timestamp) TTL_DURATION = 100, TTL_COL = "create_time"` | 通过指定名称创建一个Tag。 | -| [DROP TAG](../3.ngql-guide/10.tag-statements/2.drop-tag.md) | `DROP TAG [IF EXISTS] ` | `CREATE TAG test(p1 string, p2 int)` | 删除当前工作空间内所有点上的指定Tag。 | -| [ALTER TAG](../3.ngql-guide/10.tag-statements/3.alter-tag.md) | `ALTER TAG [, alter_definition] ...] [ttl_definition [, ttl_definition] ... ] [COMMENT = '']` | `ALTER TAG t1 ADD (p3 int, p4 string)` | 修改Tag的结构。例如增删属性、修改数据类型,也可以为属性设置、修改[TTL](../3.ngql-guide/8.clauses-and-options/ttl-options.md(Time-To-Live)。 | -| [SHOW TAGS](../3.ngql-guide/10.tag-statements/4.show-tags.md) | `SHOW TAGS` | `SHOW TAGS` | 显示当前图空间内的所有Tag名称。 | -| [DESCRIBE TAG](../3.ngql-guide/10.tag-statements/5.describe-tag.md) | `DESC[RIBE] TAG ` | `DESCRIBE TAG player` | 指定Tag的详细信息,例如字段名称、数据类型等。 | -| [DELETE TAG](../3.ngql-guide/10.tag-statements/6.delete-tag.md) | `DELETE TAG FROM ` | `DELETE TAG test1 FROM "test"` | 删除指定点上的指定Tag。 | - - +| [CREATE TAG](../3.ngql-guide/10.tag-statements/1.create-tag.md) | `CREATE TAG [IF NOT EXISTS] ( [NULL | NOT NULL] [DEFAULT ] [COMMENT ''] [{, [NULL | NOT NULL] [DEFAULT ] [COMMENT '']} ...] ) [TTL_DURATION = ] [TTL_COL = ] [COMMENT = ''] ` | `CREATE TAG woman(name string, age int, married bool, salary double, create_time timestamp) TTL_DURATION = 100, TTL_COL = "create_time"` | 通过指定名称创建一个 Tag。 | +| [DROP TAG](../3.ngql-guide/10.tag-statements/2.drop-tag.md) | `DROP TAG [IF EXISTS] ` | `CREATE TAG test(p1 string, p2 int)` | 删除当前工作空间内所有点上的指定 Tag。 | +| [ALTER TAG](../3.ngql-guide/10.tag-statements/3.alter-tag.md) | `ALTER TAG [, alter_definition] ...] [ttl_definition [, ttl_definition] ... ] [COMMENT = '']` | `ALTER TAG t1 ADD (p3 int, p4 string)` | 修改 Tag 的结构。例如增删属性、修改数据类型,也可以为属性设置、修改 [TTL](../3.ngql-guide/8.clauses-and-options/ttl-options.md(Time-To-Live)。 | +| [SHOW TAGS](../3.ngql-guide/10.tag-statements/4.show-tags.md) | `SHOW TAGS` | `SHOW TAGS` | 显示当前图空间内的所有 Tag 名称。 | +| [DESCRIBE TAG](../3.ngql-guide/10.tag-statements/5.describe-tag.md) | `DESC[RIBE] TAG ` | `DESCRIBE TAG player` | 指定 Tag 的详细信息,例如字段名称、数据类型等。 | +| [DELETE TAG](../3.ngql-guide/10.tag-statements/6.delete-tag.md) | `DELETE TAG FROM ` | `DELETE TAG test1 FROM "test"` | 删除指定点上的指定 Tag。 | -## Edge type语句 +## Edge type 语句 | 语句 | 语法 | 示例 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | --------------------------------------------------- | -| [CREATE EDGE](../3.ngql-guide/11.edge-type-statements/1.create-edge.md) | `CREATE EDGE [IF NOT EXISTS] ( [NULL | NOT NULL] [DEFAULT ] [COMMENT ''] [{, [NULL | NOT NULL] [DEFAULT ] [COMMENT '']} ...] ) [TTL_DURATION = ] [TTL_COL = ] [COMMENT = ''] ` | `CREATE EDGE e1(p1 string, p2 int, p3 timestamp) TTL_DURATION = 100, TTL_COL = "p2"` | 指定名称创建一个Edge type。 | -| [DROP EDGE](../3.ngql-guide/11.edge-type-statements/2.drop-edge.md) | `DROP EDGE [IF EXISTS] ` | `DROP EDGE e1` | 删除当前工作空间内的指定Edge type。 | -| [ALTER EDGE](../3.ngql-guide/11.edge-type-statements/3.alter-edge.md) | `ALTER EDGE [, alter_definition] ...] [ttl_definition [, ttl_definition] ... ] [COMMENT = '']` | `ALTER EDGE e1 ADD (p3 int, p4 string)` | 修改Edge type的结构。 | -| [SHOW EDGES](../3.ngql-guide/11.edge-type-statements/4.show-edges.md) | `SHOW EDGES` | `SHOW EDGES` | 显示当前图空间内的所有Edge type名称。 | -| [DESCRIBE EDGE](../3.ngql-guide/11.edge-type-statements/5.describe-edge.md) | `DESC[RIBE] EDGE ` | `DESCRIBE EDGE follow` | 指定Edge type的详细信息,例如字段名称、数据类型等。 | - - +| [CREATE EDGE](../3.ngql-guide/11.edge-type-statements/1.create-edge.md) | `CREATE EDGE [IF NOT EXISTS] ( [NULL | NOT NULL] [DEFAULT ] [COMMENT ''] [{, [NULL | NOT NULL] [DEFAULT ] [COMMENT '']} ...] ) [TTL_DURATION = ] [TTL_COL = ] [COMMENT = ''] ` | `CREATE EDGE e1(p1 string, p2 int, p3 timestamp) TTL_DURATION = 100, TTL_COL = "p2"` | 指定名称创建一个 Edge type。 | +| [DROP EDGE](../3.ngql-guide/11.edge-type-statements/2.drop-edge.md) | `DROP EDGE [IF EXISTS] ` | `DROP EDGE e1` | 删除当前工作空间内的指定 Edge type。 | +| [ALTER EDGE](../3.ngql-guide/11.edge-type-statements/3.alter-edge.md) | `ALTER EDGE [, alter_definition] ...] [ttl_definition [, ttl_definition] ... ] [COMMENT = '']` | `ALTER EDGE e1 ADD (p3 int, p4 string)` | 修改 Edge type 的结构。 | +| [SHOW EDGES](../3.ngql-guide/11.edge-type-statements/4.show-edges.md) | `SHOW EDGES` | `SHOW EDGES` | 显示当前图空间内的所有 Edge type 名称。 | +| [DESCRIBE EDGE](../3.ngql-guide/11.edge-type-statements/5.describe-edge.md) | `DESC[RIBE] EDGE ` | `DESCRIBE EDGE follow` | 指定 Edge type 的详细信息,例如字段名称、数据类型等。 | ## 点语句 | 语句 | 语法 | 示例 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| [INSERT VERTEX](../3.ngql-guide/12.vertex-statements/1.insert-vertex.md) | `INSERT VERTEX [IF NOT EXISTS] () [, (), ...] {VALUES | VALUE} VID: ([, ])` | `INSERT VERTEX t2 (name, age) VALUES "13":("n3", 12), "14":("n4", 8)` | 在Nebula Graph实例的指定图空间中插入一个或多个点。 | +| [INSERT VERTEX](../3.ngql-guide/12.vertex-statements/1.insert-vertex.md) | `INSERT VERTEX [IF NOT EXISTS] () [, (), ...] {VALUES | VALUE} VID: ([, ])` | `INSERT VERTEX t2 (name, age) VALUES "13":("n3", 12), "14":("n4", 8)` | 在 Nebula Graph 实例的指定图空间中插入一个或多个点。 | | [DELETE VERTEX](../3.ngql-guide/12.vertex-statements/4.delete-vertex.md) | `DELETE VERTEX [, ...]` | `DELETE VERTEX "team1"` | 删除点,以及点关联的出边和入边。 | -| [UPDATE VERTEX](../3.ngql-guide/12.vertex-statements/2.update-vertex.md) | `UPDATE VERTEX ON SET [WHEN ] [YIELD ]` | `UPDATE VERTEX ON player "player101" SET age = age + 2 ` | 修改点上Tag的属性值。 | +| [UPDATE VERTEX](../3.ngql-guide/12.vertex-statements/2.update-vertex.md) | `UPDATE VERTEX ON SET [WHEN ] [YIELD ]` | `UPDATE VERTEX ON player "player101" SET age = age + 2 ` | 修改点上 Tag 的属性值。 | | [UPSERT VERTEX](../3.ngql-guide/12.vertex-statements/3.upsert-vertex.md) | `UPSERT VERTEX ON SET [WHEN ] [YIELD ]` | `UPSERT VERTEX ON player "player667" SET age = 31` | 结合`UPDATE`和`INSERT`,如果点存在,会修改点的属性值;如果点不存在,会插入新的点。 | - - ## 边语句 | 语句 | 语法 | 示例 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| [INSERT EDGE](../3.ngql-guide/13.edge-statements/1.insert-edge.md) | `INSERT EDGE [IF NOT EXISTS] ( ) {VALUES | VALUE} -> [@] : ( ) [, -> [@] : ( ), ...]` | `INSERT EDGE e2 (name, age) VALUES "11"->"13":("n1", 1)` | 在Nebula Graph实例的指定图空间中插入一条或多条边。 | +| [INSERT EDGE](../3.ngql-guide/13.edge-statements/1.insert-edge.md) | `INSERT EDGE [IF NOT EXISTS] ( ) {VALUES | VALUE} -> [@] : ( ) [, -> [@] : ( ), ...]` | `INSERT EDGE e2 (name, age) VALUES "11"->"13":("n1", 1)` | 在 Nebula Graph 实例的指定图空间中插入一条或多条边。 | | [DELETE EDGE](../3.ngql-guide/12.vertex-statements/3.upsert-vertex.md) | `DELETE EDGE -> [@] [, -> [@] ...]` | `DELETE EDGE serve "player100" -> "team204"@0` | 删除边。一次可以删除一条或多条边。 | -| [UPDATE EDGE](../3.ngql-guide/13.edge-statements/2.update-edge.md) | `UPDATE EDGE ON -> [@] SET [WHEN ] [YIELD ]` | `UPDATE EDGE ON serve "player100" -> "team204"@0 SET start_year = start_year + 1` | 修改边上Edge type的属性。 | +| [UPDATE EDGE](../3.ngql-guide/13.edge-statements/2.update-edge.md) | `UPDATE EDGE ON -> [@] SET [WHEN ] [YIELD ]` | `UPDATE EDGE ON serve "player100" -> "team204"@0 SET start_year = start_year + 1` | 修改边上 Edge type 的属性。 | | [UPSERT EDGE](../3.ngql-guide/12.vertex-statements/3.upsert-vertex.md) | `UPSERT EDGE ON -> [@rank] SET [WHEN ] [YIELD ]` | `UPSERT EDGE on serve "player666" -> "team200"@0 SET end_year = 2021` | 结合`UPDATE`和`INSERT`,如果边存在,会更新边的属性;如果边不存在,会插入新的边。 | - - ## 索引 * 原生索引 @@ -437,9 +406,9 @@ | 语句 | 语法 | 示例 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------- | ------------------------------------------------------------ | - | [CREATE INDEX](../3.ngql-guide/14.native-index-statements/1.create-native-index.md) | `CREATE {TAG | EDGE} INDEX [IF NOT EXISTS] ON { | } ([]) [COMMENT = '']` | `CREATE TAG INDEX player_index on player()` | 对Tag、EdgeType或其属性创建原生索引。 | - | [SHOW CREATE INDEX](../3.ngql-guide/14.native-index-statements/2.1.show-create-index.md) | `SHOW CREATE {TAG | EDGE} INDEX ` | `show create tag index index_2` | 创建Tag或者Edge type时使用的nGQL语句,其中包含索引的详细信息,例如其关联的属性。 | - | [SHOW INDEXES](../3.ngql-guide/14.native-index-statements/2.show-native-indexes.md) | `SHOW {TAG | EDGE} INDEXES` | `SHOW TAG INDEXES` | 列出当前图空间内的所有Tag和Edge type(包括属性)的索引。 | + | [CREATE INDEX](../3.ngql-guide/14.native-index-statements/1.create-native-index.md) | `CREATE {TAG | EDGE} INDEX [IF NOT EXISTS] ON { | } ([]) [COMMENT = '']` | `CREATE TAG INDEX player_index on player()` | 对 Tag、EdgeType 或其属性创建原生索引。 | + | [SHOW CREATE INDEX](../3.ngql-guide/14.native-index-statements/2.1.show-create-index.md) | `SHOW CREATE {TAG | EDGE} INDEX ` | `show create tag index index_2` | 创建 Tag 或者 Edge type 时使用的 nGQL 语句,其中包含索引的详细信息,例如其关联的属性。 | + | [SHOW INDEXES](../3.ngql-guide/14.native-index-statements/2.show-native-indexes.md) | `SHOW {TAG | EDGE} INDEXES` | `SHOW TAG INDEXES` | 列出当前图空间内的所有 Tag 和 Edge type(包括属性)的索引。 | | [DESCRIBE INDEX](../3.ngql-guide/14.native-index-statements/3.describe-native-index.md) | `DESCRIBE {TAG | EDGE} INDEX ` | `DESCRIBE TAG INDEX player_index_0` | 查看指定索引的信息,包括索引的属性名称(Field)和数据类型(Type)。 | | [REBUILD INDEX](../3.ngql-guide/14.native-index-statements/4.rebuild-native-index.md) | `REBUILD {TAG | EDGE} INDEX []` | `REBUILD TAG INDEX single_person_index` | 重建索引。索引功能不会自动对其创建之前已存在的存量数据生效。 | | [SHOW INDEX STATUS](../3.ngql-guide/14.native-index-statements/5.show-native-index-status.md) | `SHOW {TAG | EDGE} INDEX STATUS` | `SHOW TAG INDEX STATUS` | 查看索引名称和对应的状态。 | @@ -451,7 +420,7 @@ | 语法 | 示例 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | - | `SIGN IN TEXT SERVICE [( [,, ]), (), ...]` | `SIGN IN TEXT SERVICE (127.0.0.1:9200)` | Nebula Graph的全文索引是基于[Elasticsearch](https://en.wikipedia.org/wiki/Elasticsearch)实现,部署Elasticsearch集群之后,可以使用`SIGN IN`语句登录Elasticsearch客户端。 | + | `SIGN IN TEXT SERVICE [( [,, ]), (), ...]` | `SIGN IN TEXT SERVICE (127.0.0.1:9200)` | Nebula Graph 的全文索引是基于 [Elasticsearch](https://en.wikipedia.org/wiki/Elasticsearch) 实现,部署 Elasticsearch 集群之后,可以使用`SIGN IN`语句登录 Elasticsearch 客户端。 | | `SHOW TEXT SEARCH CLIENTS` | `SHOW TEXT SEARCH CLIENTS` | 列出文本搜索客户端。 | | `SIGN OUT TEXT SERVICE` | `SIGN OUT TEXT SERVICE` | 退出所有文本搜索客户端。 | | `CREATE FULLTEXT {TAG | EDGE} INDEX ON { | } ([])` | `CREATE FULLTEXT TAG INDEX nebula_index_1 ON player(name)` | 创建全文索引。 | @@ -460,25 +429,19 @@ | `DROP FULLTEXT INDEX ` | `DROP FULLTEXT INDEX nebula_index_1` | 删除全文索引。 | | `LOOKUP ON { | } WHERE [YIELD ]` | `LOOKUP ON player WHERE FUZZY(player.name, "Tim Dunncan", AUTO, OR) YIELD player.name` | 使用查询选项。 | - - ## 子图和路径 | 类型 | 语法 | 示例 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| [子图](../3.ngql-guide/16.subgraph-and-path/1.get-subgraph.md) | `GET SUBGRAPH [WITH PROP] [ STEPS] FROM {, ...} [{IN | OUT | BOTH} , ...] [YIELD [VERTICES AS ] [,EDGES AS ]] ` | `GET SUBGRAPH 1 STEPS FROM "player100" YIELD VERTICES AS nodes, EDGES AS relationships` | 指定Edge type的起始点可以到达的点和边的信息,返回子图信息。 | +| [子图](../3.ngql-guide/16.subgraph-and-path/1.get-subgraph.md) | `GET SUBGRAPH [WITH PROP] [ STEPS] FROM {, ...} [{IN | OUT | BOTH} , ...] [YIELD [VERTICES AS ] [,EDGES AS ]] ` | `GET SUBGRAPH 1 STEPS FROM "player100" YIELD VERTICES AS nodes, EDGES AS relationships` | 指定 Edge type 的起始点可以到达的点和边的信息,返回子图信息。 | | [路径](../3.ngql-guide/16.subgraph-and-path/2.find-path.md) | `FIND { SHORTEST | ALL | NOLOOP } PATH [WITH PROP] FROM TO
OVER [REVERSELY | BIDIRECT] [] [UPTO STEPS] [| ORDER BY $-.path] [| LIMIT ]` | `FIND SHORTEST PATH FROM "player102" TO "team204" OVER *` | 查找指定起始点和目的点之间的路径。返回的路径格式类似于`()-[:@]->(` | `EXPLAIN format="row" SHOW TAGS`
`EXPLAIN format="dot" SHOW TAGS` | 输出nGQL语句的执行计划,但不会执行nGQL语句。 | -| [PROFILE](../3.ngql-guide/17.query-tuning-statements/1.explain-and-profile.md) | `PROFILE [format="row" | "dot"] ` | `PROFILE format="row" SHOW TAGS`
`EXPLAIN format="dot" SHOW TAGS` | 执行nGQL语句,然后输出执行计划和执行概要。 | - - +| [EXPLAIN](../3.ngql-guide/17.query-tuning-statements/1.explain-and-profile.md) | `EXPLAIN [format="row" | "dot"] ` | `EXPLAIN format="row" SHOW TAGS`
`EXPLAIN format="dot" SHOW TAGS` | 输出 nGQL 语句的执行计划,但不会执行 nGQL 语句。 | +| [PROFILE](../3.ngql-guide/17.query-tuning-statements/1.explain-and-profile.md) | `PROFILE [format="row" | "dot"] ` | `PROFILE format="row" SHOW TAGS`
`EXPLAIN format="dot" SHOW TAGS` | 执行 nGQL 语句,然后输出执行计划和执行概要。 | ## 运维 @@ -486,20 +449,20 @@ | 语法 | 说明 | | :-------------------------------- | :----------------------------------------------------------- | - | `BALANCE DATA` | 启动任务均衡分布Nebula Graph集群里的所有分片。该命令会返回任务ID(`balance_id`)。 | + | `BALANCE DATA` | 启动任务均衡分布 Nebula Graph 集群里的所有分片。该命令会返回任务 ID(`balance_id`)。 | | `BALANCE DATA ` | 显示`BALANCE DATA`任务的状态。 | | `BALANCE DATA STOP` | 停止`BALANCE DATA`任务。 | - | `BALANCE DATA REMOVE ` | 在Nebula Graph集群中扫描并解绑指定的Storage主机。 | - | `BALANCE LEADER` | 在Nebula Graph集群中均衡分布leader。 | + | `BALANCE DATA REMOVE ` | 在 Nebula Graph 集群中扫描并解绑指定的 Storage 主机。 | + | `BALANCE LEADER` | 在 Nebula Graph 集群中均衡分布 leader。 | * [作业管理](../3.ngql-guide/18.operation-and-maintenance-statements/4.job-statements.md) | 语法 | 说明 | | -------------------- | ------------------------------------------------------------ | - | `SUBMIT JOB COMPACT` | 触发RocksDB的长耗时`compact`操作。 | - | `SUBMIT JOB FLUSH` | 将内存中的RocksDB memfile写入硬盘。 | + | `SUBMIT JOB COMPACT` | 触发 RocksDB 的长耗时`compact`操作。 | + | `SUBMIT JOB FLUSH` | 将内存中的 RocksDB memfile 写入硬盘。 | | `SUBMIT JOB STATS` | 启动一个作业,该作业对当前图空间进行统计。作业完成后,用户可以使用`SHOW STATS`语句列出统计结果。 | - | `SHOW JOB ` | 显示当前图空间内指定作业和相关任务的信息。Meta服务将`SUBMIT JOB`请求解析为多个任务,然后分配给进程nebula-storaged。 | + | `SHOW JOB ` | 显示当前图空间内指定作业和相关任务的信息。Meta 服务将`SUBMIT JOB`请求解析为多个任务,然后分配给进程 nebula-storaged。 | | `SHOW JOBS` | 列出当前图空间内所有未过期的作业。 | | `STOP JOB` | 停止当前图空间内未完成的作业。 | | `RECOVER JOB` | 重新执行当前图空间内失败的作业,并返回已恢复的作业数量。 | @@ -509,5 +472,3 @@ | 语法 | 示例 | 说明 | | --------------------------------------------------- | ----------------------------------------------- | -------------------------------------------- | | `KILL QUERY (session=, plan=)` | `KILL QUERY(SESSION=1625553545984255,PLAN=163)` | 在一个会话中执行命令终止另一个会话中的查询。 | - -