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