ここにあなたのグラフだ - それは、このようにあなたのサンプルデータを提供するために、常に便利ですグレムリンに関する質問をするとき:あなたが望む答えを得るために
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() }
ありがとう! - これはTinkerpop 3で動作しますが、Tinkerpop 2xを使用したソリューションを探していましたが、OrientDBコミュニティバージョンは古いTinkerpop仕様をサポートしています。 – DavSeq
私の2.xの知識は不安定ですが、パターンはほぼ同じです。 2.xを含むように私の答えを更新し、さらに3.xの答えをさらに改善しました。トラバーサルは、すべての隣接する頂点を反復し、潜在的に複数の真を見つけるよりも、最初の「真」に当たるとすぐに停止します。 –
多くのありがとうスティーブン! – DavSeq