第23期 Gremlin Steps:
map
、flatMap()
本系列文章的Gremlin示例均在HugeGraph图数据库上执行,环境搭建可参考准备Gremlin执行环境,本文示例均以其中的“TinkerPop关系图”为初始数据。
转换操作说明
map
: 可以接受一个遍历器 Step 或 Lamda 表达式,将遍历器中的元素映射(转换)成另一个类型的某个对象(一对一),以便进行下一步处理;flatMap
: 可以接受一个遍历器 Step 或 Lamda 表达式,将遍历器中的元素映射(转换)成另一个类型的某个对象流或迭代器(一对多)。
实例讲解
下面通过实例来深入理解每一个操作。
Step
map()
示例1:
1
2
3// 获取顶点“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:
1
2// 先获取顶点“3:HugeGraph”的入“created”顶点,再将每个顶点转化为出边(一条)
g.V('3:HugeGraph').in('created').map(outE())注意:顶点“javeme”其实是有三条边的,但是这里只打印出了一条。因为
map
Step是一对一的转换,要想获取所有的边可以使用flatMap
。Step
flatMap()
示例1:
1
2// 先获取顶点“3:HugeGraph”的入“created”顶点,再将每个顶点转化为出边(多条)
g.V('3:HugeGraph').in('created').flatMap(outE())注意:这一次就能打印出顶点“javeme”的全部三条边了。