連接圖數據庫GDB實例后,您可以通過數據管理DMS或GDB開源可視化控制臺GDB Console對創建好的圖數據庫進行查詢和分析。

目前圖數據庫GDB支持Gremlin和OpenCypher兩種查詢語言,您可以根據購買的內核版本選擇不同的查詢語言進行圖查詢和分析。

前提條件

已根據快速入門完成登錄數據庫步驟,具體操作,請參見登錄數據庫

Gremlin

以下示例語句適用于內核版本為Gremlin的圖數據庫GDB實例。

點查詢

  • 統計點的數量。
    g.V().count()
  • 統計每種類型點的數量。
    g.V().group().by(label).by(count())
    g.V().groupCount().by(label)
  • 查詢所有點。
    g.V().limit(100)
  • 查詢指定標簽的點。
    g.V().hasLabel('person')
  • 根據點ID查詢點。
    g.V('123')
  • 按屬性過濾點。
    g.V().has('name','張三')

邊查詢

  • 統計邊的數量。
    g.E().count()
  • 統計每種類型邊的數量。
    g.E().group().by(label).by(count())
  • 查詢所有邊。
    g.E()
  • 查詢指定標簽的邊。
    g.E().hasLabel('connect')
  • 根據邊ID查詢邊。
    g.E('12')
  • 查詢點所關聯的邊。
    g.V('123').outE('connect')
  • 查詢路徑。
    g.V('123').outE('connect').path()

屬性查詢

  • 查詢點的屬性。
    g.V('123').valueMap(true)

排序查詢

  • 按照屬性字段進行排序。
    g.V().has('name','張三').outE('connect').order().by('weight', decr).valueMap(true)

新增點

  • 新增點。
    g.addV('person').property(id,'23').property('name','李四')

刪除點

  • 刪除指定點。
    g.V('123').drop()
  • 根據屬性刪除點。
    g.V().has('person').property('age', values('18')).drop()
  • 分批刪除所有點。
    g.V().drop().limit(1024)

新增邊

  • 新增邊。
    g.addE('connect').property('weight', '4').from(g.V('12')).to(g.V('16'))

刪除邊

  • 刪除邊。
    g.E('23').drop()

OpenCypher

以下示例語句適用于內核版本為OpenCypher的圖數據庫GDB實例。

點查詢

  • 統計點的數量。
    MATCH (n) return count(n)
  • 統計每種類型點的數量。
    MATCH (n) return labels(n), count(*)
  • 查詢所有點(不建議使用)。
    MATCH (n) return n limit 10
  • 查詢指定標簽的點。
    MATCH (n:person) return n
  • 按屬性過濾點。
    MATCH (n:person {firstName: "Carlos"}) return n;

邊查詢

  • 統計邊的數量。
    MATCH (n)-[r]->(m) return count(r)
  • 統計每種類型邊的數量。
    MATCH (n)-[r]->(m) return type(r), count(*)
  • 查詢所有邊。
    MATCH (n)-[r]->(m) return r
  • 查詢指定標簽的邊。
    MATCH (n)-[r:knows]->(m) return r
  • 根據邊屬性查詢邊。
    MATCH (n)-[r:knows {creationDate:1274809046847}]->(m) return r
  • 查詢點所關聯的邊。
    MATCH (n:person {firstName: "Carlos"})-[r]->(m) return r
  • 查詢路徑。
    MATCH p=(n:person {firstName: "Carlos"})-[r]->(m) return p

屬性查詢

  • 查詢點的屬性。
    MATCH (n:person {firstName: "Carlos"}) return properties(n) limit 2;

排序查詢

  • 按照屬性字段進行排序。
    MATCH (n:person {firstName: "Mahinda"})-[r]-(m) return m order by m.locationIP

新增點

  • 新增點。
    CREATE (n:Person {name: 'Andy', title: 'Developer'})

刪除點

  • 刪除指定點。
    MATCH (n:Person {name: 'tom'})
    DELETE n
  • 根據屬性刪除點。
    MATCH (a {name: 'Andy'})
    REMOVE a.age
    RETURN a
  • 分批刪除所有點。
    MATCH (n:Person )
    DELETE n
    LIMIT 10

新增邊

  • 新增邊。
    MATCH
      (a:Person),
      (b:Person)
    WHERE a.name = 'A' AND b.name = 'B'
    CREATE (a)-[r:RELTYPE]->(b)
    RETURN type(r)

刪除邊

  • 刪除邊。
    MATCH (n {name: 'Andy'})-[r:KNOWS]->()
    DELETE rg.E('23').drop()