Graph 在《小精灵》中,如何通过投影进行过滤?

Graph 在《小精灵》中,如何通过投影进行过滤?,graph,gremlin,tinkerpop,Graph,Gremlin,Tinkerpop,如果我有这样一行的查询: project('faceId','count')。 如何按预计计数进行过滤 这是我使用的整个测试查询: g.V().hasLabel('face'). ......1> project('faceId','count'). ......2> by('faceId'). ......3> by(where(without('a')).both('is similar'). ......4> where(witho

如果我有这样一行的查询:

project('faceId','count')。

如何按预计计数进行过滤

这是我使用的整个测试查询:

g.V().hasLabel('face').
......1>   project('faceId','count').
......2>     by('faceId').
......3>     by(where(without('a')).both('is similar').
......4>        where(without('a')).
......5>        store('a').
......6>        count())
==>[faceId:face1,count:4]
==>[faceId:face9,count:1]
==>[faceId:face2,count:0]
==>[faceId:face3,count:0]
==>[faceId:face4,count:0]
==>[faceId:face5,count:0]
==>[faceId:face6,count:1]
==>[faceId:face7,count:0]
==>[faceId:face8,count:0]
我正在尝试过滤掉任何计数为0的内容。我尝试过这样做一个过滤步骤,但“count”是一个投影而不是一个值,因此它对我不起作用:

.filter{it.count>0}
其中(选择('count')。为.gt(0))

我还尝试在上述计数步骤的末尾添加
.as('count')
,但仍然没有成功

**测试图**

// The graph
graph = TinkerFactory.createModern()
g = graph.traversal()

g.addV('face').property('faceId','face1')
g.addV('face').property('faceId','face2')
g.addV('face').property('faceId','face3')
g.addV('face').property('faceId','face4')
g.addV('face').property('faceId','face5')
g.addV('face').property('faceId','face6')
g.addV('face').property('faceId','face7')
g.addV('face').property('faceId','face8')
g.addV('face').property('faceId','face9')

g.V().has('face','faceId','face1').as('a').V().has('face','faceId','face2').as('b').addE('is similar').from('a').to('b')
g.V().has('face','faceId','face1').as('a').V().has('face','faceId','face3').as('b').addE('is similar').from('a').to('b')
g.V().has('face','faceId','face1').as('a').V().has('face','faceId','face4').as('b').addE('is similar').from('a').to('b')
g.V().has('face','faceId','face1').as('a').V().has('face','faceId','face5').as('b').addE('is similar').from('a').to('b')
g.V().has('face','faceId','face2').as('a').V().has('face','faceId','face3').as('b').addE('is similar').from('a').to('b')
g.V().has('face','faceId','face2').as('a').V().has('face','faceId','face4').as('b').addE('is similar').from('a').to('b')
g.V().has('face','faceId','face5').as('a').V().has('face','faceId','face6').as('b').addE('is similar').from('a').to('b')
g.V().has('face','faceId','face6').as('a').V().has('face','faceId','face7').as('b').addE('is similar').from('a').to('b')
g.V().has('face','faceId','face8').as('a').V().has('face','faceId','face9').as('b').addE('is similar').from('a').to('b')

看起来您的想法是正确的,但使用了
gt
作为步骤,而不是
p
(即
谓词
):


谢谢这就是我需要的。我自己怎么会知道,这样我就知道下次如何找到这样的答案了?好吧,在这种情况下,你只是把一个步骤错当成了谓词。我不确定谷歌会不会轻易帮上忙。也许看看步骤参数会有所帮助。有时,查看JavadocforGraphTraversal可以了解特定步骤需要哪些参数:谢谢!下次我一定会看一看的!
gremlin> g.V().hasLabel('face').
......1>   project('faceId','count').
......2>     by('faceId').
......3>     by(where(without('a')).both('is similar').
......4>        where(without('a')).
......5>        store('a').
......6>        count()).
......7>   filter(select('count').is(gt(0)))
==>[faceId:face1,count:4]
==>[faceId:face9,count:1]
==>[faceId:face6,count:1]