第16期 Gremlin Steps:
aggregate()
、store()
、unfold()
、fold()
本系列文章的Gremlin示例均在HugeGraph图数据库上执行,环境搭建可参考准备Gremlin执行环境,本文示例均以其中的“TinkerPop关系图”为初始数据,如下图所示:
上一期: 深入学习Gremlin(15):合并
结果聚集与展开说明
Gremlin在路径游走的时候,可以将某一步的所有结果收集到一个集合里面(我们称之为结果聚集),以备在后续步骤中使用;此外还可在需要的时候将聚集的结果展开。
下面讲解实现上述功能的具体Step:
aggregate()
: 聚集路径中指定步骤的所有结果,通过aggregate(label)
对任意步骤打上标签,在此之前的步骤的结果均会被收集到此标签所代表的集合中(但并不会影响路径的游走),可配合by
及cap
一起使用,通过cap(label)
来获取该结果集合,此外还可通过select(label)
或without(label)
等其它方式读取。store()
: 类似aggregate()
,只是以Lazy的方式来收集。unfold()
: 将集合展开平铺,路径将扩张。fold()
: 将多个元素折叠为一个集合,路径将收缩。
实例讲解
下面通过实例来深入理解每一个操作。
-
Step
aggregate()
:聚集路径中的结果示例1:
// 收集第1步的结果到集合'x'中 // 注意:不影响后续结果 g.V('2:HugeGraph').out().aggregate('x')
示例2:
// 收集第1步的结果到集合'x'中 // 并通过cap取出结果 // 与示例1比较,结果的层次更深了 g.V('2:HugeGraph').out() .aggregate('x').cap('x')