图数据库的应用场景
- 知识图谱
- 社交关系查找
- 欺诈检查
和mysql一样,我们需要理解节点和边的增删改查,使用如下:
The Gremlin Console 下载地址
https://www.apache.org/dyn/closer.lua/tinkerpop/3.5.1/apache-tinkerpop-gremlin-console-3.5.1-bin.zip
$ cd apache-tinkerpop-gremlin-console-3.5.1
$ bin/gremlin.sh
\,,,/
(o o)
-----oOOo-(3)-oOOo-----
plugin activated: tinkerpop.server
plugin activated: tinkerpop.utilities
plugin activated: tinkerpop.tinkergraph
gremlin>
graph = TinkerGraph.open()
g = traversal().withEmbedded(graph)
#注意 这里的id其实并不是作为一个属性
v1 = g.addV("person").property(id, 1).property("name", "marko").property("age", 29).next()
v2 = g.addV("software").property(id, 3).property("name", "lop").property("lang", "java").next()
g.addE("created").from(v1).to(v2).property(id, 9).property("weight", 0.4)
#注意,如果没有加入property(id, 1),会自动生成一个id,通过这个id drop节点的时候,不能删成功,很诡异。只能通过 g.V().has("name","qin2").drop()
#删除边
gremlin> g.V(1).outE().drop()
#更新属性
gremlin> g.V(1).property("age",30)
==>v[1]
#out和outE的区别,一个是获取下一个节点,一个是获取当前节点的边
gremlin> g.V(1).out()
==>v[3]
gremlin> g.V(1).outE()
==>e[9][1-created->3]
#使用 has() (filter) 单步就可以来筛选过滤边,顶点和顶点的属性。
gremlin> g.V().label()
==>person
==>software
gremlin> g.V(1).outE().label()
==>created
gremlin> g.V(1).properties().label()
==>name
==>age
gremlin> g.V().hasLabel('person')
==>v[1]
gremlin> g.V().hasLabel('person').out().has('name',within('lop','kk'))
==>v[3]
#查找Label person的值,类似 Select all
gremlin> g.V().hasLabel('person').valueMap()
==>[name:[marko],age:[29]]
#查找Label person的值,类似 Select name, age
gremlin> g.V().hasLabel('person').values("name","age")
==>marko
==>29
# 遍历元素
gremlin> g.V().elementMap()
==>[id:1,label:person,name:marko,age:29]
==>[id:3,label:software,name:lop,lang:java]
==>[id:4,label:person,name:qin,age:22]
==>[id:7,label:person,name:qin,age:21]
# 遍历边
g.E(9).elementMap()
# 给边created添加属性
g.E(9).property("owner",1)
#age必须在大于20,且小于30
gremlin> g.V().hasLabel("person").has('age',inside(20,30)).values("name")
==>marko
==>qin
g.V(1).out().values('name')
一次从顶点1向外向(从顶点1沿外向边进行一步游走)的获取相邻接点name的遍历
g.V().filter {it.get().label() == 'person'}
一个过滤器(filter)操作,过滤条件是顶点的标签是"person"
网友评论