深入学习Gremlin(23):转换操作
2018-10-08 本文已影响112人
苏黎世黄昏
第23期 Gremlin Steps:
map
、flatMap()
本系列文章的Gremlin示例均在HugeGraph图数据库上执行,环境搭建可参考准备Gremlin执行环境,本文示例均以其中的“TinkerPop关系图”为初始数据。
![](https://img.haomeiwen.com/i2968959/44061dcb39dd18cb.png)
转换操作说明
![](https://img.haomeiwen.com/i2968959/2f151b624c8d2519.png)
-
map
: 可以接受一个遍历器 Step 或 Lamda 表达式,将遍历器中的元素映射(转换)成另一个类型的某个对象(一对一),以便进行下一步处理; -
flatMap
: 可以接受一个遍历器 Step 或 Lamda 表达式,将遍历器中的元素映射(转换)成另一个类型的某个对象流或迭代器(一对多)。
实例讲解
下面通过实例来深入理解每一个操作。
-
Step
map()
示例1:
// 获取顶点“3:HugeGraph”的入“created”顶点的“name”属性,其实可以理解为顶点对象转化成了属性值对象 g.V('3:HugeGraph').in('created').map(values('name')) // g.V('3:HugeGraph').in('created').map {it.get().value('name')}
自己动手将
g.V('3:HugeGraph').in('created').map {it.get().value('name')}
的注视打开试试效果。示例2:
// 先获取顶点“3:HugeGraph”的入“created”顶点,再将每个顶点转化为出边(一条) g.V('3:HugeGraph').in('created').map(outE())
注意:顶点“javeme”其实是有三条边的,但是这里只打印出了一条。因为
map
Step是一对一的转换,要想获取所有的边可以使用flatMap
。 -
Step
flatMap()
示例1:
// 先获取顶点“3:HugeGraph”的入“created”顶点,再将每个顶点转化为出边(多条) g.V('3:HugeGraph').in('created').flatMap(outE())
注意:这一次就能打印出顶点“javeme”的全部三条边了。