Schema 函数¶
Nebula Graph 支持以下 Schema 函数。
原生 nGQL 语句适用¶
Note
YIELD 和 WHERE 子句中可以使用如下函数。
函数 | 说明 |
---|---|
id(vertex) | 返回点 ID。数据类型和点 ID 的类型保持一致。 |
map properties(vertex) | 返回点的所有属性。 |
map properties(edge) | 返回边的所有属性。 |
string type(edge) | 返回边的 Edge type。 |
src(edge) | 返回边的起始点 ID。数据类型和点 ID 的类型保持一致。 |
dst(edge) | 返回边的目的点 ID。数据类型和点 ID 的类型保持一致。 |
int rank(edge) | 返回边的 rank。 |
vertex | 返回点的信息。包括点 ID、Tag、属性和值。 |
edge | 返回边的信息。包括 Edge type、起始点 ID、目的点 ID、rank、属性和值。 |
vertices | 返回子图中的点的信息。详情参见 GET SUBGRAPH。 |
edges | 返回子图中的边的信息。详情参见 GET SUBGRAPH。 |
path | 返回路径信息。详情参见 FIND PATH。 |
Note
由于 vertex、edge、vertices、edges、path 属于关键字,使用时需要用AS <alias>
设置别名才能正常使用。例如GO FROM "player100" OVER follow YIELD edge AS e;
。
openCypher 兼容语句适用¶
函数 | 说明 |
---|---|
id(<vertex>) | 返回点 ID。数据类型和点 ID 的类型保持一致。 |
list tags(<vertex>) | 返回点的 Tag,与 labels() 作用相同。 |
list labels(<vertex>) | 返回点的 Tag,与 tags() 作用相同,用于兼容 openCypher 语法。 |
map properties(<vertex_or_edge>) | 返回点或边的所有属性。 |
string type(<edge>) | 返回边的 Edge type。 |
src(<edge>) | 返回边的起始点 ID。数据类型和点 ID 的类型保持一致。 |
dst(<edge>) | 返回边的目的点 ID。数据类型和点 ID 的类型保持一致。 |
vertex startNode(<path>) | 获取一条边或一条路径并返回它的起始点 ID。 |
string endNode(<path>) | 获取一条边或一条路径并返回它的目的点 ID。 |
int rank(<edge>) | 返回边的 rank。 |
示例¶
nebula> GO FROM "player100" OVER follow REVERSELY \
YIELD src(edge) AS destination;
+-------------+
| destination |
+-------------+
| "player101" |
| "player102" |
...
nebula> LOOKUP ON player WHERE player.age > 45 YIELD id(vertex);
+-------------+
| id(VERTEX) |
+-------------+
| "player144" |
| "player140" |
+-------------+
nebula> MATCH (a:player) WHERE id(a) == "player100" \
RETURN tags(a), labels(a), properties(a);
+------------+------------+-------------------------------+
| tags(a) | labels(a) | properties(a) |
+------------+------------+-------------------------------+
| ["player"] | ["player"] | {age: 42, name: "Tim Duncan"} |
+------------+------------+-------------------------------+
nebula> MATCH p = (a :player {name : "Tim Duncan"})-[r:serve]-(t) \
RETURN type(r), rank(r);
+---------+---------+
| type(r) | rank(r) |
+---------+---------+
| "serve" | 0 |
+---------+---------+
nebula> MATCH p = (a :player {name : "Tim Duncan"})-[r:serve]-(t) \
RETURN startNode(p), endNode(p);
+----------------------------------------------------+----------------------------------+
| startNode(p) | endNode(p) |
+----------------------------------------------------+----------------------------------+
| ("player100" :player{age: 42, name: "Tim Duncan"}) | ("team204" :team{name: "Spurs"}) |
+----------------------------------------------------+----------------------------------+
最后更新:
March 7, 2023