1. 程式人生 > >HugeGraph圖資料庫你可能不知道的小祕密

HugeGraph圖資料庫你可能不知道的小祕密

  1. 看下圖箭頭指向,可以得出的資訊: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)這樣的示例,查詢的結果肯定是不對的注意區分。

    在這裡插入圖片描述
  2. 示例:g.V().hasLabel('person').range(0, -1) 不加限制地查詢所有型別為’person’的頂點
  3. 示例:g.V().hasLabel('person').range(2, 5) 查詢型別為’person’的頂點中的第2個到第5個 python 學多了會混淆!
  4. 示例:g.V().hasLabel(‘software').has('name','HugeGraph').both().path() “HugeGraph”頂點到與其有直接關聯的頂點的路徑(僅包含頂點)如果想要同時獲得經過的邊的資訊呢?可以用bothE().otherV()替換both() g.V().hasLabel('software').has('name','HugeGraph').bothE().otherV().path()
    // “HugeGraph”頂點到與其有直接關聯的頂點的路徑(包含頂點和邊)
  5. until()放在repeat()之前或之後的順序是會影響邏輯的,放前面表示先判斷再執行,放後面表示先執行後判斷。對比如下兩個語句的執行結果:
    g.V('okram').repeat(out()).until(hasLabel('person')).path()
    g.V(‘okram').until(hasLabel('person')).repeat(out()).path()
  6. 關於排序:
    order().by(incr): 將結果以升序輸出,這也是預設的排序方式;
    order().by(decr): 將結果以降序輸出;
    order().by(shuffle): 將結果以隨機序輸出,每次執行結果順序都可能不一樣
  7. 獲得各個地方人們的平均年齡
    // 根據地域分組,並得到各個組的平均年齡
    g.V().hasLabel('person').group().by('addr').by(values('age').mean())
    在這裡插入圖片描述
  8. 統計頂點的邊數量的分佈情況
    // 擁有相同數量邊的頂點作為一組
    // 並獲取每一組的頂點數量
    // 結果相當於:擁有m條邊的頂點有n個
    g.V().groupCount().by(bothE().count())
    在這裡插入圖片描述6條邊的頂點一個:Gremlin 2條邊的頂點六個
  9. // 先獲取頂點“2:HugeGraph”的入“created”頂點,再將每個頂點轉化為出邊(一條):g.V(‘2:HugeGraph').in('created').map(outE())
    注意:頂點“javeme”其實是有三條邊的,但是這裡只打印出了一條。因為mapStep是一對一的轉換,要想獲取所有的邊可以使用flatMap。
  10. // 先獲取頂點“2:HugeGraph”的入“created”頂點,再將每個頂點轉化為出邊(多條):g.V(‘2:HugeGraph').in('created').flatMap(outE())
  11. 另外值得一提的是:
    https://blog.csdn.net/javeme/article/details/82627396 這裡的out、in、 both、other一定要特別特別特別的熟練。熟練運用這些做資料探勘很方便如虎添翼。特別是綜合運用裡的那部分要熟練掌握:多度查詢,查合作關係,關聯關係等等。

Bust my butt