美文网首页
gremlin语言介绍三:基本查询

gremlin语言介绍三:基本查询

作者: 生饼 | 来源:发表于2020-07-05 03:08 被阅读0次

1 has

检查vertex或edge的id、label或property value的值是否满足特定的条件进行查询,应该是最常用的查询了

1.1 语法

has(key,value) has(label, key, value) has(key,predicate) hasLabel(labels…) hasId(ids…) hasKey(keys…) hasValue(values…) has(key) hasNot(key) has(key, traversal)

1.2 实例说明

过滤指定id的vertex或edge

# id为4160的vertex
gremlin> g.V().has(id, 4160)
==>v[4160]
gremlin> g.V().hasId(4160)
==>v[4160]

过滤指定label的vertex或edge

# label为Person的vertex
gremlin> g.V().has(label, 'Person')
==>v[4160]
==>v[4336]
gremlin> g.V().hasLabel('Person')
==>v[4160]
==>v[4336]

检查属性

gremlin> g.V().has('name', '张三')
==>v[4160]

has()可以同时包含label和property参数

# 第一个参数是label值
gremlin> g.V().has('Person','name', '张三')
==>v[4160]

has()的值可以是一个predicate表达式,支持更复杂的查询,比如:

# age值等于20,与has('age', 20)的效果相同
gremlin> g.V().has('age', eq(20))
==>v[4160]
gremlin> g.V().has('age', gt(10))
==>v[4160]

检查property key

# 存在名字为age的property的vertex
gremlin> g.V().has('age')
==>v[4160]

# 不存在名字为age的property的vertex
gremlin> g.V().hasNot('age')
==>v[4296]
==>v[4336]

# 名字为age的property
gremlin> g.V().properties().hasKey('age')
==>vp[age->20]
# 值为20的property
gremlin> g.V().properties().hasValue(20)
==>vp[age->20]

2 is

判断一个标量(如属性的值)是否满足特定条件

2.1 语法

is(Object) is(P)

2.2 实例说明

age值等于20

gremlin> g.V(4160).values('age').is(20)
==>20

图库中有三个vertex

gremlin> g.V().count().is(3)
==>3

条件可以是一个predicate

gremlin> g.V(4160).values('age').is(gt(20))
==>20

3 where

where的参数可以是一个predicate,也可以是一个traversal。predicate的结果为true或者traversal的结果为非空,表示满足条件

3.1 语法

where(P) where(String,P) where(Traversal)

3.2 实例说明

查找名字叫 张三 的人,结果与g.V().has('name', '张三')一样

gremlin> g.V().where(has('name', '张三'))

查找住在shenzhen的人

gremlin> g.V().where(out('living').has('name','shenzhen'))

可以与by()结合,比较两个对象的property值
查找被自己年龄小的人认识的人

gremlin> g.V().as('a').out('knows').as('b').where('a', lt('b')).by('age')

相关文章

网友评论

      本文标题:gremlin语言介绍三:基本查询

      本文链接:https://www.haomeiwen.com/subject/wpemqktx.html