美文网首页
gremlin语言介绍二:图基本CRUD操作

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

作者: 生饼 | 来源:发表于2020-07-05 03:07 被阅读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]
    

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/ypemqktx.html