gremlin基础语法

gremlin基础语法
逐暗者环境
采用apache-tinkerpop-console 3.2.11,可以在官网下载到
先建立一个空的图数据库(内存)
1 | g = TinkerGraph.open().traversal() |
基础
一共有5种通用的单步(general-step)
一般来说, 每一个单步接受一个遍历对象,返回执行后的遍历对象结果,所以下一个单步操作同样使用这个遍历结果,再次返回一个遍历结果。 这样图的遍历过程就能如流式接口, 幺半群运算这样的方式持续进行下去。 但是,有一些单步操作不返回遍历对象,而是执行遍历并返回一个结果(类型不同或者不可迭代,所以遍历没法继续,从而终止)。 这些特殊的单步游就叫做 结束性单步
语法
增加顶点
addV可以添加顶点,配合property还可以设置属性
1 | g.addV('student').property('name','张三') |
根据属性查找顶点
1 | g.V().has('name','张三') |
has可以按照某个属性值过滤,hasLabel可以根据label过滤
增加边
1 | g.V().has('name','王五').addE('teach').to(V().has('name','张三')).property('level',1) |
使用has过滤出需要增加边的两端,然后使用addE 和to来增加边,配上property可以增加属性
增加修改属性
1 | g.V().has('name','张三').property('age',15).property('gender','男') |
property返回之前操作的对象而不是新增加的属性,所以可以连续设置,已有的属性会覆盖修改。
给边增加属性也是一样的,但需要先找到边
1 | g.V().has('name','王五').outE('teach').as('a').inV().where(has('name','张三')).select('a') |
通过outE(标签)来过滤指定标签的边,再根据inV和where 过滤入口顶点,因为我们需要边,所以用as来标记边
接着用property设置属性就可以了
1 | g.V().has('name','王五').outE('teach').as('a').inV().where(has('name','张三')).select('a').property('subject','语文') |
多路劲查询
查询教张三的老师还教了谁?
1 | g.V().has('name','张三').inE('teach').outV().hasLabel('teacher').outE('teach').inV().hasLabel('student') |
也可以使用values(属性名)来提取属性值
删除
drop 可以删除属性、边、顶点
1 | g.V().has('name','张三').properties('age').drop() |
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果