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 yield clause for all ngql #1299

Merged
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
78 changes: 43 additions & 35 deletions docs-2.0/2.quick-start/4.nebula-graph-crud.md
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,7 @@ nebula> CREATE EDGE serve(start_year int, end_year int);
GO [[<M> TO] <N> STEPS ] FROM <vertex_list>
OVER <edge_type_list> [{REVERSELY | BIDIRECT}]
[ WHERE <conditions> ]
[YIELD [DISTINCT] <return_list>]
YIELD [DISTINCT] <return_list>
[{SAMPLE <sample_list> | LIMIT <limit_list>}]
[| GROUP BY {col_name | expr | position} YIELD <col_name>]
[| ORDER BY <expression> [{ASC | DESC}]]
Expand All @@ -262,22 +262,22 @@ nebula> CREATE EDGE serve(start_year int, end_year int);
```ngql
FETCH PROP ON {<tag_name>[, tag_name ...] | *}
<vid> [, vid ...]
[YIELD <return_list> [AS <alias>]];
YIELD <return_list> [AS <alias>];
```

- 查询边属性

```ngql
FETCH PROP ON <edge_type> <src_vid> -> <dst_vid>[@<rank>] [, <src_vid> -> <dst_vid> ...]
[YIELD <output>];
YIELD <output>;
```

- `LOOKUP`

```ngql
LOOKUP ON {<vertex_tag> | <edge_type>}
[WHERE <expression> [AND <expression> ...]]
[YIELD <return_list> [AS <alias>]];
YIELD <return_list> [AS <alias>];
```

- `MATCH`
Expand All @@ -291,12 +291,13 @@ nebula> CREATE EDGE serve(start_year int, end_year int);
- 从 VID 为`player101`的球员开始,沿着边`follow`找到连接的球员。

```ngql
nebula> GO FROM "player101" OVER follow;
nebula> GO FROM "player101" OVER follow YIELD id($$);
+-------------+
| follow._dst |
| id($$) |
+-------------+
| "player100" |
| "player102" |
| "player125" |
+-------------+
```

Expand All @@ -305,11 +306,12 @@ nebula> CREATE EDGE serve(start_year int, end_year int);
```ngql
nebula> GO FROM "player101" OVER follow WHERE properties($$).age >= 35 \
YIELD properties($$).name AS Teammate, properties($$).age AS Age;
+--------------+-----+
| Teammate | Age |
+--------------+-----+
| "Tim Duncan" | 42 |
+--------------+-----+
+-----------------+-----+
| Teammate | Age |
+-----------------+-----+
| "Tim Duncan" | 42 |
| "Manu Ginobili" | 41 |
+-----------------+-----+
```

|子句/符号|说明|
Expand All @@ -329,7 +331,10 @@ nebula> CREATE EDGE serve(start_year int, end_year int);
+-----------------+---------------------+
| Team | Player |
+-----------------+---------------------+
| "Spurs" | "Tim Duncan" |
| "Trail Blazers" | "LaMarcus Aldridge" |
| "Spurs" | "LaMarcus Aldridge" |
| "Spurs" | "Manu Ginobili" |
+-----------------+---------------------+
```

Expand All @@ -352,7 +357,10 @@ nebula> CREATE EDGE serve(start_year int, end_year int);
+-----------------+---------------------+
| Team | Player |
+-----------------+---------------------+
| "Spurs" | "Tim Duncan" |
| "Trail Blazers" | "LaMarcus Aldridge" |
| "Spurs" | "LaMarcus Aldridge" |
| "Spurs" | "Manu Ginobili" |
+-----------------+---------------------+
```

Expand All @@ -361,12 +369,12 @@ nebula> CREATE EDGE serve(start_year int, end_year int);
查询 VID 为`player100`的球员的属性。

```ngql
nebula> FETCH PROP ON player "player100";
+----------------------------------------------------+
| vertices_ |
+----------------------------------------------------+
| ("player100" :player{age: 42, name: "Tim Duncan"}) |
+----------------------------------------------------+
nebula> FETCH PROP ON player "player100" YIELD properties(vertex);
+-------------------------------+
| properties(VERTEX) |
+-------------------------------+
| {age: 42, name: "Tim Duncan"} |
+-------------------------------+
```

!!! Note
Expand Down Expand Up @@ -413,25 +421,25 @@ nebula> FETCH PROP ON player "player100";
```ngql
nebula> UPDATE VERTEX "player100" SET player.name = "Tim";

nebula> FETCH PROP ON player "player100";
+---------------------------------------------+
| vertices_ |
+---------------------------------------------+
| ("player100" :player{age: 42, name: "Tim"}) |
+---------------------------------------------+
nebula> FETCH PROP ON player "player100" YIELD properties(vertex);
+------------------------+
| properties(VERTEX) |
+------------------------+
| {age: 42, name: "Tim"} |
+------------------------+
```

- 用`UPDATE`修改某条边的`degree`属性,然后用`FETCH`检查结果。

```ngql
nebula> UPDATE EDGE "player101" -> "player100" OF follow SET degree = 96;

nebula> FETCH PROP ON follow "player101" -> "player100";
+----------------------------------------------------+
| edges_ |
+----------------------------------------------------+
| [:follow "player101"->"player100" @0 {degree: 96}] |
+----------------------------------------------------+
nebula> FETCH PROP ON follow "player101" -> "player100" YIELD properties(edge);
+------------------+
| properties(EDGE) |
+------------------+
| {degree: 96} |
+------------------+
```

- 用`INSERT`插入一个 VID 为`player111`的点,然后用`UPSERT`更新它。
Expand Down Expand Up @@ -517,7 +525,7 @@ nebula> FETCH PROP ON player "player100";

```nGQL
// 为 name 属性创建索引 player_index_1。
nebula> CREATE TAG INDEX player_index_1 ON player(name(20));
nebula> CREATE TAG INDEX IF NOT EXISTS player_index_1 ON player(name(20));

// 重建索引确保能对已存在数据生效。
nebula> REBUILD TAG INDEX player_index_1
Expand All @@ -530,11 +538,11 @@ nebula> REBUILD TAG INDEX player_index_1
// 使用 LOOKUP 语句检索点的属性。
nebula> LOOKUP ON player WHERE player.name == "Tony Parker" \
YIELD properties(vertex).name AS name, properties(vertex).age AS age;
+-------------+---------------+-----+
| VertexID | name | age |
+-------------+---------------+-----+
| "player101" | "Tony Parker" | 36 |
+-------------+---------------+-----+
+---------------+-----+
| name | age |
+---------------+-----+
| "Tony Parker" | 36 |
+---------------+-----+

// 使用 MATCH 语句检索点的属性。
nebula> MATCH (v:player{name:"Tony Parker"}) RETURN v;
Expand Down
19 changes: 10 additions & 9 deletions docs-2.0/3.ngql-guide/10.tag-statements/6.delete-tag.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,26 +28,27 @@ DELETE TAG <tag_name_list> FROM <VID>;
nebula> CREATE TAG IF NOT EXISTS test1(p1 string, p2 int);
nebula> CREATE TAG IF NOT EXISTS test2(p3 string, p4 int);
nebula> INSERT VERTEX test1(p1, p2),test2(p3, p4) VALUES "test":("123", 1, "456", 2);
nebula> FETCH PROP ON * "test";
nebula> FETCH PROP ON * "test" YIELD vertex AS v;
+------------------------------------------------------------+
| vertices_ |
| v |
+------------------------------------------------------------+
| ("test" :test2{p3: "456", p4: 2} :test1{p1: "123", p2: 1}) |
| ("test" :test1{p1: "123", p2: 1} :test2{p3: "456", p4: 2}) |
+------------------------------------------------------------+

nebula> DELETE TAG test1 FROM "test";
nebula> FETCH PROP ON * "test";
nebula> FETCH PROP ON * "test" YIELD vertex AS v;
+-----------------------------------+
| vertices_ |
| v |
+-----------------------------------+
| ("test" :test2{p3: "456", p4: 2}) |
+-----------------------------------+

nebula> DELETE TAG * FROM "test";
nebula> FETCH PROP ON * "test";
+-----------+
| vertices_ |
+-----------+
nebula> FETCH PROP ON * "test" YIELD vertex AS v;
+---+
| v |
+---+
+---+
```

!!! Compatibility
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,19 +29,19 @@ nebula> MATCH (v:shareholder) RETURN v;
| ("player100" :player{age: 42, name: "Tim Duncan"} :shareholder{}) |
| ("player101" :player{age: 36, name: "Tony Parker"} :shareholder{}) |
+---------------------------------------------------------------------+
nebula> LOOKUP ON shareholder;
nebula> LOOKUP ON shareholder YIELD id(vertex);
+-------------+
| VertexID |
| id(VERTEX) |
+-------------+
| "player100" |
| "player101" |
+-------------+

//如果 player100 不再是股东
nebula> DELETE TAG shareholder FROM "player100";
nebula> LOOKUP ON shareholder;
nebula> LOOKUP ON shareholder YIELD id(vertex);
+-------------+
| VertexID |
| id(VERTEX) |
+-------------+
| "player101" |
+-------------+
Expand Down
48 changes: 24 additions & 24 deletions docs-2.0/3.ngql-guide/12.vertex-statements/1.insert-vertex.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,12 +78,12 @@ nebula> INSERT VERTEX t3 (p1), t4(p2) VALUES "21": (321, "hello");
nebula> INSERT VERTEX t2 (name, age) VALUES "11":("n2", 13);
nebula> INSERT VERTEX t2 (name, age) VALUES "11":("n3", 14);
nebula> INSERT VERTEX t2 (name, age) VALUES "11":("n4", 15);
nebula> FETCH PROP ON t2 "11";
+---------------------------------+
| vertices_ |
+---------------------------------+
| ("11" :t2{age: 15, name: "n4"}) |
+---------------------------------+
nebula> FETCH PROP ON t2 "11" YIELD properties(vertex);
+-----------------------+
| properties(VERTEX) |
+-----------------------+
| {age: 15, name: "n4"} |
+-----------------------+
```

```ngql
Expand All @@ -96,21 +96,21 @@ nebula> INSERT VERTEX t5(p1, p2, p3) VALUES "002":(NULL, 4, 5);

# 属性 p3 为默认值 NULL。
nebula> INSERT VERTEX t5(p1, p2) VALUES "003":("cd", 5);
nebula> FETCH PROP ON t5 "003";
+--------------------------------------------+
| vertices_ |
+--------------------------------------------+
| ("003" :t5{p1: "cd", p2: 5, p3: __NULL__}) |
+--------------------------------------------+
nebula> FETCH PROP ON t5 "003" YIELD properties(vertex);
+---------------------------------+
| properties(VERTEX) |
+---------------------------------+
| {p1: "cd", p2: 5, p3: __NULL__} |
+---------------------------------+

# 属性 p1 最大长度为 5,因此会被截断。
nebula> INSERT VERTEX t5(p1, p2) VALUES "004":("shalalalala", 4);
nebula> FETCH PROP on t5 "004";
+-----------------------------------------------+
| vertices_ |
+-----------------------------------------------+
| ("004" :t5{p1: "shala", p2: 4, p3: __NULL__}) |
+-----------------------------------------------+
nebula> FETCH PROP on t5 "004" YIELD properties(vertex);
+------------------------------------+
| properties(VERTEX) |
+------------------------------------+
| {p1: "shala", p2: 4, p3: __NULL__} |
+------------------------------------+
```

使用`IF NOT EXISTS`插入已存在的点时,不会进行修改。
Expand All @@ -120,10 +120,10 @@ nebula> FETCH PROP on t5 "004";
nebula> INSERT VERTEX t2 (name, age) VALUES "1":("n2", 13);
# 使用 IF NOT EXISTS 修改点 1,因为点 1 已存在,不会进行修改。
nebula> INSERT VERTEX IF NOT EXISTS t2 (name, age) VALUES "1":("n3", 14);
nebula> FETCH PROP ON t2 "1";
+--------------------------------+
| vertices_ |
+--------------------------------+
| ("1" :t2{age: 13, name: "n2"}) |
+--------------------------------+
nebula> FETCH PROP ON t2 "1" YIELD properties(vertex);
+-----------------------+
| properties(VERTEX) |
+-----------------------+
| {age: 13, name: "n2"} |
+-----------------------+
```
12 changes: 6 additions & 6 deletions docs-2.0/3.ngql-guide/12.vertex-statements/2.update-vertex.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@ SET <update_prop>

```ngql
// 查看点”player101“的属性。
nebula> FETCH PROP ON player "player101";
+-----------------------------------------------------+
| vertices_ |
+-----------------------------------------------------+
| ("player101" :player{age: 36, name: "Tony Parker"}) |
+-----------------------------------------------------+
nebula> FETCH PROP ON player "player101" YIELD properties(vertex);
+--------------------------------+
| properties(VERTEX) |
+--------------------------------+
| {age: 36, name: "Tony Parker"} |
+--------------------------------+

// 修改属性 age 的值,并返回 name 和新的 age。
nebula> UPDATE VERTEX ON player "player101" \
Expand Down
37 changes: 19 additions & 18 deletions docs-2.0/3.ngql-guide/12.vertex-statements/3.upsert-vertex.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,11 @@ SET <update_prop>

```ngql
// 查看三个点是否存在,结果 “Empty set” 表示顶点不存在。
nebula> FETCH PROP ON * "player666", "player667", "player668";
+-----------+
| vertices_ |
+-----------+
nebula> FETCH PROP ON * "player666", "player667", "player668" YIELD properties(vertex);
+--------------------+
| properties(VERTEX) |
+--------------------+
+--------------------+
Empty set

nebula> UPSERT VERTEX ON player "player666" \
Expand Down Expand Up @@ -123,12 +124,12 @@ nebula> UPSERT VERTEX ON player_with_default "player101" \
如果点存在,且满足`WHEN`子句的条件,就会修改点的属性值。

```ngql
nebula> FETCH PROP ON player "player101";
+-----------------------------------------------------+
| vertices_ |
+-----------------------------------------------------+
| ("player101" :player{age: 42, name: "Tony Parker"}) |
+-----------------------------------------------------+
nebula> FETCH PROP ON player "player101" YIELD properties(vertex);
+--------------------------------+
| properties(VERTEX) |
+--------------------------------+
| {age: 36, name: "Tony Parker"} |
+--------------------------------+

nebula> UPSERT VERTEX ON player "player101" \
SET age = age + 2 \
Expand All @@ -137,19 +138,19 @@ nebula> UPSERT VERTEX ON player "player101" \
+---------------+-----+
| Name | Age |
+---------------+-----+
| "Tony Parker" | 44 |
| "Tony Parker" | 38 |
+---------------+-----+
```

如果点存在,但是不满足`WHEN`子句的条件,修改不会生效。

```ngql
nebula> FETCH PROP ON player "player101";
+-----------------------------------------------------+
| vertices_ |
+-----------------------------------------------------+
| ("player101" :player{age: 44, name: "Tony Parker"}) |
+-----------------------------------------------------+
nebula> FETCH PROP ON player "player101" YIELD properties(vertex);
+--------------------------------+
| properties(VERTEX) |
+--------------------------------+
| {age: 38, name: "Tony Parker"} |
+--------------------------------+

nebula> UPSERT VERTEX ON player "player101" \
SET age = age + 2 \
Expand All @@ -158,6 +159,6 @@ nebula> UPSERT VERTEX ON player "player101" \
+---------------+-----+
| Name | Age |
+---------------+-----+
| "Tony Parker" | 44 |
| "Tony Parker" | 38 |
+---------------+-----+
```
Loading