跳转至

Schema 函数Graph

NebulaGraph 支持以下 Schema 函数。

原生 nGQL 语句适用Graph

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 返回子图中的点的信息。详情参见 Graph。
edges 返回子图中的边的信息。详情参见 Graph。
path 返回路径信息。详情参见 Graph。

Note

由于 vertex、edge、vertices、edges、path 属于关键字,使用时需要用AS <alias>设置别名才能正常使用。例如GO FROM "player100" OVER follow YIELD edge AS e;

openCypher 兼容语句适用Graph

函数 说明
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。

示例Graph

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"}) |
+----------------------------------------------------+----------------------------------+

最后更新: January 14, 2022