HugeGraph圖資料庫你可能不知道的小祕密
阿新 • • 發佈:2018-12-14
- 看下圖箭頭指向,可以得出的資訊:zhoney knows javeme 兩個人都created Hugegraph->supports Gremlin 這是一條到達最底層的路徑。Okram 與 mbroecheler 不認識,但都created Titan->supports Gremlin這個又是另外一條路經。另外:3:Gremlin、2:Titan、2:Hugegraph 分別代表什麼意思呢?這其實是從外向內開始數的:最外層為(1:xxx)這一般不寫;往裡邊數第二層為(2:xxx)這裡分別對應著圖中的 HugeGraph、Titan;然後是第三層(3:xxx)圖中對應著 Gremlin。當然,這些數字是自動賦值的。你需要看清楚知道,才能查到自己想要的。學習的時候見到了很多(4:Gremlin)這樣的示例,查詢的結果肯定是不對的注意區分。
- 示例:
g.V().hasLabel('person').range(0, -1)
不加限制地查詢所有型別為’person’的頂點 - 示例:
g.V().hasLabel('person').range(2, 5)
查詢型別為’person’的頂點中的第2個到第5個 python 學多了會混淆! - 示例:
g.V().hasLabel(‘software').has('name','HugeGraph').both().path()
“HugeGraph”頂點到與其有直接關聯的頂點的路徑(僅包含頂點)如果想要同時獲得經過的邊的資訊呢?可以用bothE().otherV()替換both()g.V().hasLabel('software').has('name','HugeGraph').bothE().otherV().path()
- until()放在repeat()之前或之後的順序是會影響邏輯的,放前面表示先判斷再執行,放後面表示先執行後判斷。對比如下兩個語句的執行結果:
g.V('okram').repeat(out()).until(hasLabel('person')).path()
g.V(‘okram').until(hasLabel('person')).repeat(out()).path()
- 關於排序:
order().by(incr): 將結果以升序輸出,這也是預設的排序方式;
order().by(decr): 將結果以降序輸出;
order().by(shuffle): 將結果以隨機序輸出,每次執行結果順序都可能不一樣 - 獲得各個地方人們的平均年齡
// 根據地域分組,並得到各個組的平均年齡
g.V().hasLabel('person').group().by('addr').by(values('age').mean())
- 統計頂點的邊數量的分佈情況
// 擁有相同數量邊的頂點作為一組
// 並獲取每一組的頂點數量
// 結果相當於:擁有m條邊的頂點有n個
g.V().groupCount().by(bothE().count())
6條邊的頂點一個:Gremlin 2條邊的頂點六個 - // 先獲取頂點“2:HugeGraph”的入“created”頂點,再將每個頂點轉化為出邊(一條):
g.V(‘2:HugeGraph').in('created').map(outE())
注意:頂點“javeme”其實是有三條邊的,但是這裡只打印出了一條。因為mapStep是一對一的轉換,要想獲取所有的邊可以使用flatMap。 - // 先獲取頂點“2:HugeGraph”的入“created”頂點,再將每個頂點轉化為出邊(多條):
g.V(‘2:HugeGraph').in('created').flatMap(outE())
- 另外值得一提的是:
https://blog.csdn.net/javeme/article/details/82627396 這裡的out、in、 both、other一定要特別特別特別的熟練。熟練運用這些做資料探勘很方便如虎添翼。特別是綜合運用裡的那部分要熟練掌握:多度查詢,查合作關係,關聯關係等等。