Group[code=a]->Choice[selected=true]
Group[code=a]->Choice[selected=false]
Group[code=a]->Choice[selected=false]
Group[code=b]->Choice[selected=false]
Group[code=b]->Choice[selected=false]
Group[code=c]->Choice[selected=false]
Group[code=c]->Choice[selected=true]
鉴于上述顶点,我正在寻找组顶点,其中一个组没有任何选择顶点,选定属性为真。
因此结果应仅返回B组
Group[code=b]
感谢任何帮助。
答案 0 :(得分:2)
这是您的图表 - 在询问有关Gremlin的问题时,以这种方式提供您的示例数据总是有帮助的:
graph = TinkerGraph.open()
g = graph.traversal()
g.addV('group').property('code','a').as('a').
addV('group').property('code','b').as('b').
addV('group').property('code','c').as('c').
addV('choice').property('selected',true).
addE('link').from('a').
addV('choice').property('selected',false).
addE('link').from('a').
addV('choice').property('selected',false).
addE('link').from('a').
addV('choice').property('selected',false).
addE('link').from('b').
addV('choice').property('selected',false).
addE('link').from('b').
addV('choice').property('selected',false).
addE('link').from('c').
addV('choice').property('selected',true).
addE('link').from('c').iterate()
获得所需答案的一种方法是进行这样的遍历:
gremlin> g.V().hasLabel('group').
......1> where(__.not(out('link').has('selected',true))).
......2> values('code')
==>b
以上答案适用于TinkerPop 3.x.在TinkerPop 2.x中,模式是相同的。你基本上会这样做:
g.V().has('label','group').filter{ it._().out('link').has('selected',true).hasNext() }