网站LOGO
逐暗者的麦田
页面加载中
3月19日
网站LOGO 逐暗者的麦田
一个java软件攻城狮
菜单
  • 逐暗者的麦田
    一个java软件攻城狮
    用户的头像
    首次访问
    上次留言
    累计留言
    我的等级
    我的角色
    打赏二维码
    打赏博主
    gremlin基础语法
    点击复制本页信息
    微信扫一扫
    文章二维码
    文章图片 文章标题
    创建时间
  • 一 言
    确认删除此评论么? 确认
  • 本弹窗介绍内容来自,本网站不对其中内容负责。
    按住ctrl可打开默认菜单

    gremlin基础语法

    shellingford · 原创 ·
    程序人生 · 语法gremlin
    共 2334 字 · 约 2 分钟 · 449
    本文最后更新于2023年08月05日,已经过了227天没有更新,若内容或图片失效,请留言反馈

    环境

    采用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()
    声明:本文由 shellingford(博主)原创,依据 CC-BY-NC-SA 4.0 许可协议 授权,转载请注明出处。

    还没有人喜爱这篇文章呢

    发一条! 发一条!
    博客logo 逐暗者的麦田 一个java软件攻城狮
    MOEICP 萌ICP备20237379号 ICP 沪ICP备13037081号-2,沪ICP备13037081号-1,沪ICP备13037081号-3 又拍云 本站由又拍云提供CDN加速/云存储服务

    🕛

    本站已运行 2 年 206 天 5 小时 26 分

    🌳

    自豪地使用 Typecho 建站,并搭配 MyLife 主题
    逐暗者的麦田. © 2021 ~ 2024.
    网站logo

    逐暗者的麦田 一个java软件攻城狮
     
     
     
     
    壁纸