第23期 Gremlin Steps:
map
、flatMap()
本系列文章的Gremlin示例均在HugeGraph圖數(shù)據(jù)庫上執(zhí)行辩撑,環(huán)境搭建可參考準(zhǔn)備Gremlin執(zhí)行環(huán)境宛渐,本文示例均以其中的“TinkerPop關(guān)系圖”為初始數(shù)據(jù)竞漾。
tinkerpop關(guān)系圖
上一期:深入學(xué)習(xí)Gremlin(22):遍歷終止操作
轉(zhuǎn)換操作說明
-
map
: 可以接受一個(gè)遍歷器 Step 或 Lamda 表達(dá)式,將遍歷器中的元素映射(轉(zhuǎn)換)成另一個(gè)類型的某個(gè)對象(一對一)窥翩,以便進(jìn)行下一步處理业岁; -
flatMap
: 可以接受一個(gè)遍歷器 Step 或 Lamda 表達(dá)式,將遍歷器中的元素映射(轉(zhuǎn)換)成另一個(gè)類型的某個(gè)對象流或迭代器(一對多)寇蚊。
實(shí)例講解
下面通過實(shí)例來深入理解每一個(gè)操作笔时。
-
Step
map()
示例1:
// 獲取頂點(diǎn)“3:HugeGraph”的入“created”頂點(diǎn)的“name”屬性,其實(shí)可以理解為頂點(diǎn)對象轉(zhuǎn)化成了屬性值對象 g.V('3:HugeGraph').in('created').map(values('name')) // g.V('3:HugeGraph').in('created').map {it.get().value('name')}
自己動(dòng)手將
g.V('3:HugeGraph').in('created').map {it.get().value('name')}
的注視打開試試效果仗岸。示例2:
// 先獲取頂點(diǎn)“3:HugeGraph”的入“created”頂點(diǎn)允耿,再將每個(gè)頂點(diǎn)轉(zhuǎn)化為出邊(一條) g.V('3:HugeGraph').in('created').map(outE())
注意:頂點(diǎn)“javeme”其實(shí)是有三條邊的,但是這里只打印出了一條扒怖。因?yàn)?code>mapStep是一對一的轉(zhuǎn)換,要想獲取所有的邊可以使用
flatMap
。 -
Step
flatMap()
示例1:
// 先獲取頂點(diǎn)“3:HugeGraph”的入“created”頂點(diǎn)刃跛,再將每個(gè)頂點(diǎn)轉(zhuǎn)化為出邊(多條) g.V('3:HugeGraph').in('created').flatMap(outE())
注意:這一次就能打印出頂點(diǎn)“javeme”的全部三條邊了谨设。