gremlin-both()与bothE().bothV()的区别
前言
之前一直以为在gremlin查询中,gremlin的both()和bothE().bothV()效果相同。但是在实际应用中,发现他们并不是相同的。
let`s begin~ =.=
graph.V(3).both()
: 返回 id为3的节点出边和入边获取到的目标节点,不包含id为3的源节点
graph.V(3).bothE().bothV()
:返回 id为3的节点的出边和入编获取到的所有节点,包含id为3的源节点
官网上解释
bothV()
The bothV step returns the vertices at both ends of an edge
。
both()
If we wanted to return vertices instead of edges, we could use the both step. This will return all of the vertices connected to the vertex with an ID of 3
regardless of whether they are connected by an outgoing or an incoming edge.
官网链接 http://kelvinlawrence.net/book/Gremlin-Graph-Guide.html#otherv
实际执行测试结果
ps:以下结果均在gremlin服务中实际测试,不过进行了信息脱敏处理
获取测试数据,执行:g.V().has("user_id","5796").bothE("edge_value")
获取一条边如下,源节点(id为2539) 和 目标节点(id为8853)
==>e[2l8xqf8-15zryu8-5slx][2539-edge_value->8853]
使用both执行:g.V().has("user_id","5796").both("edge_value")
获取到一个节点,只包含目标节点,不包含源节点
==>v[8853]
使用bothE、bothV执行:g.V().has("user_id","5796").bothE("edge_value").bothV()
获取到两个节点,可以发现不仅包含目标节点还包含源节点
==>v[2539] ==>v[8853]
over~ =.=
- next_permutation(全排列算法)
- Hadoop数据分析平台实战——100HBase和MapReduce整合离线数据分析平台实战——100HBase和MapReduce整合
- Hadoop数据分析平台实战——120Hive Shell命令介绍 01(熟悉Hive略过)离线数据分析平台实战——120Hive Shell命令介绍 01(熟悉Hive略过)
- HUST 1588 辗转数对
- HUST 1584 摆放餐桌
- HUST 1585 排队
- 【QQ/微信个人号变身机器人】炸群+远程监控个人PC的尝试
- HUST 1583 长度单位
- FZU 2167 大王叫我来巡山呐
- HDU 1021 Fibonacci Again
- Hadoop数据分析平台实战——180Oozie工作流使用介绍离线数据分析平台实战——180Oozie工作流使用介绍
- 博弈论及算法实现
- Hadoop数据分析平台实战——160Sqoop介绍离线数据分析平台实战——160Sqoop介绍
- HDU 2186 悼念512汶川大地震遇难同胞——一定要记住我爱你
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- redis学习(二)
- You-Get 使用方法
- 接口测试 Mock 实战 | 结合 jq 完成批量化的手工 Mock
- 在Angular应用的child Component里同时使用@Input和@Output
- Angular应用里的@Input和@Output注解使用方法介绍
- K8S Ingress使用|常见问题列表
- 部署Tomcat及负载均衡
- Jenkins常用插件Publish Over SSH
- Zabbix 4.0配置监控Linux客户端
- esp8266+oled+DHT 11温湿度显示
- esp8266+oled 显示时间日期
- esp8266+DHT11温湿传感器 制作web室内温度计
- Linux端口转发的几种常用方法
- kali破解wifi密码
- 面向对象的7种设计原则(7)-开闭原则