gremlin语言介绍二:图基本CRUD操作

2020-07-05  本文已影响0人  生饼

1 vertex、edge、property的创建和更新

1.1 语法

addV(String) addE(String) property(Object, Object, Object…) from(String) from(Traversal) from(Vertex) to(String) to(Traversal) to(Vertex)

1.2 实例说明

创建一个新的vertex,每一个vertex有且只有一个label,addV()没有指定label时,系统自动创建的label值为vertex

gremlin> g.addV()
==>v[4296]

# 系统自动创建的label值为vertex
gremlin> g.V(4296).label()
==>vertex

创建新的vertex时,我们都会指定label,如下创建一个label值为Person的vertex

gremlin> g.addV('Person')
==>v[4264]

创建vertex时,可以同时为vertex添加property

gremlin> g.addV('City').property('name', 'shenzhen')
==>v[12432]

也可以为已经存在的vertex新增property或修改property的值

gremlin> g.V(4264).property('name', '张三').property('age', 48)
==>v[4264]

# 将age的值改为18
gremlin> g.V(4264).property('age', 18)
==>v[4264]
gremlin> g.V(4264).property('age', 18).elementMap()
==>[id:4264,label:Person,name:张三,age:18]

创建新的edge, 创建edge时必须指定起始vertex,分别通过from()和to()指定

gremlin> g.V(4264).as('person').V(12432).as('city').addE('living').from('person').to('city').property('reason','喜欢')
==>e[1zk-39c-3yt-3bc][4264-living->12432]

2 vertex、edge、property的删除

2.1 语法

drop()

2.2 实例说明

删除指定的property

gremlin> g.V(4264).properties('age').drop()

# 已经没有age property了
gremlin> g.V(4264).valueMap()
==>[name:[张三]]

删除edge和vertex,删除vertex时,同时会删除与该vertex关联的所有edge

gremlin> g.E('1zk-39c-3yt-3bc').drop()
gremlin> g.V(4264).drop()

3 vertex、edge、property的信息获取

3.1 语法

V() E() id() label() properties(String...) key() value() values(String...) valueMap(String...) elementMap(String...)

3.2 实例说明

# 所有的vertex
gremlin> g.V()

# 所有的edge
gremlin> g.E()

# 根据id获取vertex和edge,可以同时提供一个或多个id
gremlin> g.V(4264, 12432)
gremlin> g.E('1zk-39c-3yt-3bc')

# 获取vertex或edge的id和label
gremlin> g.V(4264).id()
gremlin> g.V(4264).label()
gremlin> g.E('1zk-39c-3yt-3bc').id()
gremlin> g.E('1zk-39c-3yt-3bc').label()

# 获取vertex或edge的property
# 所有的property
gremlin> g.V(4264).properties()
gremlin> g.E('1zk-39c-3yt-3bc').properties()
# 指定的property
gremlin> g.V(4264).properties('name', 'age')

# 获取vertex或edge的property key和property value
gremlin> g.V(4264).properties().key()
==>name
==>age

gremlin> g.V(4264).values()
==>张三
==>20
gremlin> g.V(4264).values('name')
==>张三

gremlin> g.V(4264).properties().value()
==>张三
==>20
gremlin> g.V(4264).properties('name').value()
==>张三

# vertex的所有property key/value 值对
gremlin> g.V(4264).valueMap()
==>[name:[张三],age:[20]]

gremlin> g.V(4264).valueMap('age')
==>[age:[20]]

# 上述方式返回的属性值是一个列表,可以把它展开
gremlin> g.V(4264).valueMap('age').by(unfold())
==>[age:20]

# 除了返回元素的属性,还可以返回id和label
# 同时返回id和label
gremlin> g.V(4264).valueMap(true, 'age').by(unfold())
==>[age:20, id:4264,label:Person]
# 下面也会同时返回id和label
gremlin> g.V(4264).valueMap('age').by(unfold())..with(WithOptions.tokens)
==>[age:20, id:4264,label:Person]
# 只返回id,不返回label
gremlin> g.V(4264).valueMap('age').by(unfold())..with(WithOptions.tokens, WithOptions.ids)
==>[age:20, id:4264]

# 不返回id,只返回label
gremlin> g.V(4264).valueMap('age').by(unfold())..with(WithOptions.tokens, WithOptions.labels)
==>[age:20, label:Person]

# propertyMap与valueMap功能一样,不过同时会输出vertex 的vertex,且不能通过with返回id和label property(vertex的property可以有自己的property)
gremlin> g.V(4264).propertyMap()

# elementMap不仅会输出property的key/value值对,同时会输出id和label值,且一定会返回id和label
gremlin> g.V(4264).elementMap()
==>[id:4160,label:Person,name:张三,age:20]
上一篇下一篇

猜你喜欢

热点阅读