Gremlin是一种用于图遍历的语言,常见的step操作如下:

遍历操作

  • g.V():从图中的所有顶点开始遍历。例如,g.V()可以获取图中的所有顶点。

  • g.E():从图中的所有边开始遍历。比如,g.E()能够获取图中的所有边。

  • g.V().out():从所有顶点出发,沿着出边方向进行遍历,访问与当前顶点相连的所有邻居顶点。

  • g.V().in():从所有顶点出发,沿着入边方向进行遍历,访问指向当前顶点的所有源顶点。

过滤操作

  • hasLabel():根据顶点或边的标签进行过滤。例如,g.V().hasLabel('person')可以获取所有标签为'person'的顶点。

  • has():根据顶点或边的属性进行过滤。如g.V().has('age', 30)可以获取所有年龄为30的顶点。

  • not():对过滤条件取反。比如g.V().not(has('name', 'John'))可以获取所有名字不是'John'的顶点。

映射操作

  • values():提取顶点或边的属性值。例如,g.V().values('name')可以获取所有顶点的'name'属性值。

  • project():将顶点或边的多个属性组合成一个新的结构。如g.V().project('name', 'age').by('name').by('age')可以将顶点的'name'和'age'属性组合成一个新的结构。

  • as():给遍历的结果或中间步骤起一个别名,方便后续引用。例如g.V().as('v').out().as('neighbor').select('v', 'neighbor'),这里给顶点和它的邻居顶点分别起了'v'和'neighbor'的别名,然后再进行选择操作。

聚合操作

  • count():统计元素的数量。例如,g.V().count()可以统计图中顶点的数量。

  • sum():对数值类型的属性进行求和。比如g.V().values('age').sum()可以计算所有顶点年龄的总和。

  • max()min():用于获取数值类型属性的最大值或最小值。如g.V().values('age').max()可以获取所有顶点年龄的最大值。

排序操作

  • order():用于对遍历结果进行排序。

  • by():结合order()使用,指定按照某个属性进行排序。例如,g.V().order().by('age', incr)可以按照顶点的'age'属性值升序排序,如果要降序则使用decr

路径操作

  • path():记录遍历过程中经过的路径。例如,g.V(1).out().path()可以获取从顶点1出发经过的路径。

  • simplePath():只返回不包含重复顶点的简单路径。比如g.V(1).out().simplePath()会返回从顶点1出发的不包含重复顶点的路径。

https://zhuanlan.zhihu.com/p/115098569