第23期 Gremlin Steps:
map
、flatMap()
本系列文章的Gremlin示例均在HugeGraph圖數據庫上執行,環境搭建可參考準備Gremlin執行環境,本文示例均以其中的“TinkerPop關係圖”爲初始數據。
上一期:深入學習Gremlin(22):遍歷終止terminal
轉換操作說明
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”的全部三條邊了。