增加和删除标签

在openCypher中,有增加标签(SET label)和移除标签(REMOVE label)的功能,可以用于加速查询或者标记过程。

在Nebula Graph中,可以通过Tag变相实现相同操作,创建Tag并将Tag插入到已有的点上,就可以根据Tag名称快速查找点,也可以通过DELETE TAG删除某些点上不再需要的Tag。

Caution

请确保点上已经有另一个Tag,否则删除点上最后一个Tag时,会导致点也被删除。

示例

例如在basketballplayer数据集中,部分篮球运动员同时也是球队股东,可以为股东Tagshareholder创建索引,方便快速查找。如果不再是股东,可以通过DELETE TAG语句删除相应运动员的股东Tag。

  1. //创建股东Tag和索引
  2. nebula> CREATE TAG shareholder();
  3. nebula> CREATE TAG INDEX shareholder_tag on shareholder();
  4. //为点添加Tag
  5. nebula> INSERT VERTEX shareholder() VALUES "player100":();
  6. nebula> INSERT VERTEX shareholder() VALUES "player101":();
  7. //快速查询所有股东
  8. nebula> MATCH (v:shareholder) RETURN v;
  9. +---------------------------------------------------------------------+
  10. | v |
  11. +---------------------------------------------------------------------+
  12. | ("player100" :player{age: 42, name: "Tim Duncan"} :shareholder{}) |
  13. | ("player101" :player{age: 36, name: "Tony Parker"} :shareholder{}) |
  14. +---------------------------------------------------------------------+
  15. nebula> LOOKUP ON shareholder;
  16. +-------------+
  17. | VertexID |
  18. +-------------+
  19. | "player100" |
  20. | "player101" |
  21. +-------------+
  22. //如果player100不再是股东
  23. nebula> DELETE TAG shareholder FROM "player100";
  24. nebula> LOOKUP ON shareholder;
  25. +-------------+
  26. | VertexID |
  27. +-------------+
  28. | "player101" |
  29. +-------------+

Note

如果插入测试数据后才创建索引,请用REBUILD TAG INDEX <index_name_list>;语句重建索引。


最后更新: November 2, 2021