Gremlin 将图形遍历的一部分的属性用作另一部分的过滤器
我想接着说:Gremlin 将图形遍历的一部分的属性用作另一部分的过滤器,gremlin,tinkerpop3,Gremlin,Tinkerpop3,我想接着说: 图的遍历部分 从第一次遍历获取属性 将其作为筛选器放入其他遍历 获取筛选值 当我在Gremlin控制台中运行下一步时: g = TinkerGraph.open().traversal() g.addV('a').property(id, 1).property('b',2) g.addV('a').property(id, 2).property('b',2).property('c',3) g.V(2).properties().key().limit(1).as('q').s
g = TinkerGraph.open().traversal()
g.addV('a').property(id, 1).property('b',2)
g.addV('a').property(id, 2).property('b',2).property('c',3)
g.V(2).properties().key().limit(1).as('q').select('q')
g.V(2).properties().key().limit(1).as('q').V(1).properties().key()
g.V(2).properties().key().limit(1).as('q').V(1).properties().key().select('q')
g.V(2).properties().key().limit(1).as('q').V(1).properties().key().where(__.is('b'))
g.V(2).properties().key().limit(1).as('q').V(1).properties().key().where(__.is(select('q')))
我得到:
gremlin> g = TinkerGraph.open().traversal()
==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
gremlin> g.addV('a').property(id, 1).property('b',2)
==>v[1]
gremlin> g.addV('a').property(id, 2).property('b',2).property('c',3)
==>v[2]
gremlin> g.V(2).properties().key().limit(1).as('q').select('q')
==>b
gremlin> g.V(2).properties().key().limit(1).as('q').V(1).properties().key()
==>b
gremlin> g.V(2).properties().key().limit(1).as('q').V(1).properties().key().select('q')
==>b
gremlin> g.V(2).properties().key().limit(1).as('q').V(1).properties().key().where(__.is('b'))
==>b
gremlin> g.V(2).properties().key().limit(1).as('q').V(1).properties().key().where(__.is(select('q')))
gremlin>
因此,我可以看到:
原型
顶点。我想绘制它的所有属性(可能是值),并找到与原型类似的所有顶点
另一种方法是将查询存储在prototype
的属性中,读取它并对其求值,以获得由它过滤的顶点
我知道我可以做应用程序端的字符串连接,但我只想留在Gremlin的无代码部分,以获得适当的提供者可移植性
更新:
官方文件中的示例:
gremlin> firstYear = g.V().hasLabel('person').
local(properties('location').values('startTime').min()).
max().next()
==>2004
gremlin> l = g.V().hasLabel('person').as('person').
properties('location').or(has('endTime',gt(firstYear)),hasNot('endTime')).as('location').
valueMap().as('times').
select('person','location','times').by('name').by(value).by().toList()
如果控制台中没有变量,我如何使用
firstYear
,而是从查询中引用变量?我看到您的问题在Gremlin用户列表中得到了回答。[1] 为可能搜索相同问题的其他人复制此处的答案
您需要的是:
g.V(2).properties().key().limit(1).as('q').V(1).properties().key().where(eq('q'))
有关了解where的不同使用模式的步骤,请参阅文档
[1]