【发布时间】:2016-04-13 20:08:27
【问题描述】:
orientdb 有一个看似“非标准”的功能,可以创建特定类别的顶点和边。
g.createVertex('class:person')
但我不清楚我是否/如何通过“标准”gremlin 获得该课程的资格?
我见过这样的语法参考:
g.V('@class','person')...
here,但后来提到了这种语法踢脚线索引。
谁能解释一下这个话题?
【问题讨论】:
orientdb 有一个看似“非标准”的功能,可以创建特定类别的顶点和边。
g.createVertex('class:person')
但我不清楚我是否/如何通过“标准”gremlin 获得该课程的资格?
我见过这样的语法参考:
g.V('@class','person')...
here,但后来提到了这种语法踢脚线索引。
谁能解释一下这个话题?
【问题讨论】:
Gremlin 似乎没有采用 Schema 特性,也不是所有的图数据库都支持 schema,所以我认为你不能直接用 Gremlin 操作 OrientDB Schema。
无论如何,您可以使用createVertexType() 命令在 OrientDB trhought Gremlin 中创建类。
连接到 ODB 数据库:
g = new OrientGraphNoTx('remote:localhost/GremlinDB')
==>orientgraphnotx[remote:localhost/GremlinDB]
创建扩展 V 的 Vertex 类 Person:
g.createVertexType('Person','V')
==>Person
现在,如果您查看 OrientDB Studio 中的 Schema,您将看到创建的新类:
已编辑
添加两个顶点后
我们可以找到name = 'John'的人。
使用has():
g.V.has('@class','Person').has('name','John')
==>v(Person)[#12:0]
使用has() + T 运算符:
g.V.has('@class','Person').has('name',T.eq,'John')
==>v(Person)[#12:0]
使用contains():
g.V.has('@class','Person').filter{it.name.contains('John')}
==>v(Person)[#12:0]
使用==:
g.V.has('@class','Person').filter{it.name == 'John'}
==>v(Person)[#12:0]
希望对你有帮助
【讨论】:
createVertexType 创建了 V 的子类,但我的问题是现在在 gremlin 查询中搜索该子类的惯用方式(例如找到我所有名字是“卢卡斯”的人)...