增加和删除标签Graph
在 openCypher 中,有增加标签(SET label
)和移除标签(REMOVE label
)的功能,可以用于加速查询或者标记过程。
在 NebulaGraph 中,可以通过 Tag 变相实现相同操作,创建 Tag 并将 Tag 插入到已有的点上,就可以根据 Tag 名称快速查找点,也可以通过DELETE TAG
删除某些点上不再需要的 Tag。
Caution
请确保点上已经有另一个 Tag,否则删除点上最后一个 Tag 时,会导致点也被删除。
示例Graph
例如在 basketballplayer 数据集中,部分篮球运动员同时也是球队股东,可以为股东 Tagshareholder
创建索引,方便快速查找。如果不再是股东,可以通过DELETE TAG
语句删除相应运动员的股东 Tag。
//创建股东 Tag 和索引
nebula> CREATE TAG IF NOT EXISTS shareholder();
nebula> CREATE TAG INDEX IF NOT EXISTS shareholder_tag on shareholder();
//为点添加 Tag
nebula> INSERT VERTEX shareholder() VALUES "player100":();
nebula> INSERT VERTEX shareholder() VALUES "player101":();
//快速查询所有股东
nebula> MATCH (v:shareholder) RETURN v;
+---------------------------------------------------------------------+
| v |
+---------------------------------------------------------------------+
| ("player100" :player{age: 42, name: "Tim Duncan"} :shareholder{}) |
| ("player101" :player{age: 36, name: "Tony Parker"} :shareholder{}) |
+---------------------------------------------------------------------+
nebula> LOOKUP ON shareholder;
+-------------+
| VertexID |
+-------------+
| "player100" |
| "player101" |
+-------------+
//如果 player100 不再是股东
nebula> DELETE TAG shareholder FROM "player100";
nebula> LOOKUP ON shareholder;
+-------------+
| VertexID |
+-------------+
| "player101" |
+-------------+
Note
如果插入测试数据后才创建索引,请用REBUILD TAG INDEX <index_name_list>;
语句重建索引。
最后更新: November 24, 2021