基本概念
图(Graph):指关系图,比如:同学及朋友关系图、银行转账图等
顶点(Vertex):一般指实体,比如:人、账户等
边(Edge):一般指关系,比如:朋友关系、转账动作等
属性(Property):顶点或边可以包含属性,比如:人的姓名、年龄、转账的时间等
此外:
顶点、边都有类别区分,在Gremlin里面称之为label。
顶点与边均由id来标识,Gremlin里顶点与边必须包括id,一般图数据库的顶点id或边id均由系统自动生成。
基本操作
V()
Step V():查询顶点,一般作为图查询的第一步,后面可以续接的语句很多。
示例:
// 查询图中所有的顶点// g代表整个图// 一切查询都是以图开始g.V()// 根据id查询顶点g.V('4:Gremlin', '3:TinkerPop')
E()
Step E():查询边,一般作为图查询的第1步,后面可以续接的语句很多。
示例:
// 查询图中所有的边g.E()// 根据id查询边g.E('S3:TinkerPop>4>>S4:Gremlin')
id()
Step id():获取顶点、边的id
示例:
// 查询所有顶点的idg.V().id()// 查询所有边的idg.E().id()
Gremlin Step是作用在上一步产生的结果集上,如果上一步的结果是多个元素,那么这里
id()将返回多个元素的id
label()
Step label():获取顶点、边的label
示例:
// 查询所有顶点的labelg.V().label()// 查询所有边的labelg.E().label()
properties()
Step properties():获取顶点、边的属性
示例:
// 查询所有顶点的属性g.V().properties()// 查询所有顶点的"lang"属性// 没有"lang"属性的顶点将被跳过g.V().properties('lang')// 查询所有边的属性g.E().properties()
properties()可以和key()、value()配合使用,获取属性的名称或者值:
// 查询所有顶点的属性名称g.V().properties().key()// 查询所有顶点的属性值g.V().properties().value()
valueMap()
Step valueMap():获取顶点、边的属性。
valueMap()与properties()不同的地方是:它们返回的结构不一样,后者将所有的属性扁平化到一个大列表中,一个元素代表一个属性;前者保持一个顶点或一条边的属性作为一组,每一组由若干属性的键值对组成。
示例:
// 查询所有顶点的属性g.V().valueMap()// 查询所有边的属性g.E().valueMap()
properties()返回的结果:
{"id": "e56f6436-c01b-4162-a130-e277ebf929e4","data": [// 扁平化的列出所有顶点的所有属性{"id": "okram>name","value": "Marko A. Rodriguez","label": "name"},{"id": "okram>age","value": 29,"label": "age"},{"id": "okram>addr","value": "Santa Fe, New Mexico","label": "addr"},{"id": "okram>weight","value": 1.0,"label": "weight"},{"id": "dalaro>name","value": "Dan LaRocque ","label": "name"},{"id": "dalaro>age","value": 0,"label": "age"},{"id": "dalaro>addr","value": "","label": "addr"},{"id": "dalaro>weight","value": 1.0,"label": "weight"}],"type": "OTHER","duration": "48","showNum": 47,"message": "","graph": {"vertices": [],"edges": [],"styles": {}}}
valueMap()返回的结果:
{"id": "30e89152-b4f2-4f3d-8bba-06041927c53f","data": [// 按顶点做了分组,每一组就是一个顶点,内部为这个顶点的所有属性{"name": ["Marko A. Rodriguez"],"age": [29],"addr": ["Santa Fe, New Mexico"],"weight": [1.0]},{"name": ["Dan LaRocque "],"age": [0],"addr": [""],"weight": [1.0]}],"type": "OTHER","duration": "27","showNum": 12,"message": "","graph": {"vertices": [],"edges": [],"styles": {}}}
values()
Step values():获取顶点、边的属性值
示例:
// 查询所有顶点的属性值// 效果等同于 g.V().properties().value()g.V().values()// 查询所有顶点的"lang"属性// 效果等同于 g.V().properties('lang').value()g.V().values('lang')// 查询所有边的属性值g.E().values()
