深入学习Gremlin(5):查询路径path
转载自:https://blog.csdn.net/linlin1989117/article/details/82625906
第5期 Gremlin Steps:
path()
、simplePath()
、cyclicPath()
本系列文章的Gremlin示例均在HugeGraph图数据库上执行,环境搭建可参考准备Gremlin执行环境,本文示例均以其中的“TinkerPop关系图”为初始数据。
上一期:深入学习Gremlin(4):图查询返回结果数限制
Path说明
在使用Gremlin对图进行分析时,关注点有时并不仅仅在最终达到顶点、边或者属性,通过什么样的路径到达最终的顶点、边和属性同样重要。此时可以借助path()
来获取经过的路径信息。
path()
返回当前遍历过的所有路径。有时需要对路径进行过滤,只选择没有环路的路径或者选择包含环路的路径,Gremlin针对这种需求提供了两种过滤路径的step:simplePath()
和cyclicPath()
。
实例讲解
1. path()
,获取当前遍历过的所有路径
// “HugeGraph”顶点到与其有直接关联的顶点的路径(仅包含顶点)
g.V().hasLabel('software').has('name','HugeGraph').both().path()
- 1
- 2
如果想要同时获得经过的边的信息,可以用.bothE().otherV()
替换both()
// “HugeGraph”顶点到与其有直接关联的顶点的路径(包含顶点和边)
g.V().hasLabel('software').has('name','HugeGraph').bothE().otherV().path()
- 1
- 2
输出路径的时候,可以通过by()
语句指定使用对象的某个属性代替对象,且by()
列表是循环应用到路径中的对象,例如路径有3个对象[A B C],by()
语句指定两个属性[X Y],代表用“用A的X属性代表A,用B的Y属性代表B,用C的X属性代表C”,具体可参考如下例子:
by()
语句的用法详解可以参见TinkerPop By Step
// “HugeGraph”顶点到与其有直接关联的顶点的路径(包含顶点和边)
// 用“name”属性代表person和software顶点,用“weight”属性代表边
g.V().hasLabel('software').has('name','HugeGraph').bothE().otherV().path().by('name').by('weight')
- 1
- 2
- 3
path()
返回所有路径,不论是否含有环路,例如:
// “HugeGraph”顶点到与其有两层关系的顶点的所有路径(只包含顶点)
g.V().hasLabel('software').has('name','HugeGraph').both().both().path()
- 1
- 2
图中红框内的是含有环路的路径,其他的是不含有环路的路径
2. simplePath()
,过滤掉路径中含有环路的对象,只保留路径中不含有环路的对象
// “HugeGraph”顶点到与其有两层关系的顶点的不含环路的路径(只包含顶点)
g.V().hasLabel('software').has('name','HugeGraph').both().both().simplePath().path()
- 1
- 2
3. cyclicPath()
,过滤掉路径中不含有环路的对象,只保留路径中含有环路的对象
// “HugeGraph”顶点到与其有两层关系的顶点的包含环路的路径(只包含顶点)
g.V().hasLabel('software').has('name','HugeGraph').both().both().cyclicPath().path()
- 1
- 2
深入学习Gremlin(5):查询路径path相关推荐
- 深入学习Gremlin(4):图查询返回结果数限制
深入学习Gremlin(4):图查询返回结果数限制 第4期 Gremlin Steps: count().range().limit().tail().skip() 本系列文章的Gremlin示例均在 ...
- NVIDIA NCCL 源码学习(五)- 路径计算
上节NCCL完成了对机器PCI系统拓扑的建图,其中建好的图如下所示,其中GPU之间是通过NVLink连接起来的 为了方便之后的搜索channel,接下来NCCL会先计算GPU和NIC节点到其他任意节点 ...
- 图数据库入门教程-深入学习Gremlin(1):图基本概念与操作
前言:Gremlin语言是图数据库最主流的查询语言,是Apache TinkerPop框架下规范的图语言,相当于SQL之于关系型数据库.为了图数据库使用者更好的掌握Gremlin这门图语言,我们对Gr ...
- 一文掌握abaqus各类选取功能,以基于路径(Path)选择为例
附赠仿真学习包,包含结构.流体.电磁.热仿真等多学科视频教程,点击领取: 仿真秀粉丝专属礼包 作者:米条老师,仿真秀专栏作者 对于软件用户来讲,经常面临非常众多且繁琐的选取功能,本文将结合 ...
- 大数据HiveSQL学习笔记三-查询基础语法以及常用函数
大数据HiveSQL学习笔记三-查询基础语法以及常用函数 一.基础语法 1.SELECT -列名- FROM -表名- WHERE -筛选条件- 如:需要根据城市,性别找出匹配的10个用户 user_ ...
- 深入学习Gremlin(12):数学运算
第12期 Gremlin Steps: math() 本系列文章的Gremlin示例均在HugeGraph图数据库上执行,环境搭建可参考准备Gremlin执行环境,本文示例均以其中的"Tin ...
- SSH学习-Hibernate关联查询
与MyBatis类似,Hibernate也有关联查询,数据库中表与表之间的关联关系使用主外键的形式体现,实体对象之间的关联关系体现在对象与对象的引用.在Mybatis中,当涉及到复杂查询并且表之间存在 ...
- 小师妹学JavaIO之:文件File和路径Path
文章目录 简介 文件和路径 文件中的不同路径 构建不同的Path 总结 简介 文件和路径有什么关系?文件和路径又隐藏了什么秘密?在文件系统的管理下,创建路径的方式又有哪些?今天F师兄带小师妹再给大家来 ...
- 深度学习论文阅读进阶路径图
↑ 点击上方[计算机视觉联盟]关注我们 介绍: 列表选自github用户floodsung发起的Deep Learning Papers Reading Roadmap项目,主要目标是收集深度学习论文 ...
最新文章
- SaltStack实战之数据系统-Grains
- Flutter 底部导航——BottomNavigationBar | 掘金技术征文
- Linux 零拷贝 sendfile函数中文说明及实际操作
- 国外少儿PYTHON编程书推荐
- 用Java解析:您可以使用的所有工具和库
- 7个华为关于C语言的经典面试题
- 电脑公司win11旗舰版32位镜像v2021.07
- 沃土云创首批方案认证伙伴授牌,华为云与伙伴共创云原生产业新价值
- php 禁用外部实体,php – Doctrine 2 – 从实体外部禁用PrePersist
- php 获取上周日期_php 获取上一周下一周的日期列表
- 低代码/无代码,在国内还有多长的路要走?
- 数字后端基本概念介绍<IO Cluster>
- 阿里云域名注册和怎么使用(域名解析)
- OpenFOAM提取等值面并计算面积
- 电脑重装系统后序列号怎么查
- dell服务器sd卡装系统,DELL服务器通过sd卡安装系统(iDRAC-Use-vFlash-).docx
- 解决BUG:Incorrect string value: ‘\xAC\xED\x00\x05~r...‘ for column ‘XX‘ at row 1 Query
- k8s pod 在节点间调度控制
- Unity Shader Fog雾气效果
- Kotlin——幸运大转盘