連接圖數據庫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()