连接图数据库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()