2012-02-28 20 views
3

私のグラフデータベースには、枝と葉があります。ブランチは「葉」を含み、ブランチは「ブランチ」を含むことができます。グラフ横断:Gremlinを使用して「友人や友人の友人」を質問するには

グレムリンを使って、特定のブランチに直接的または間接的に関連するすべてのリーフを見つけることができますか?

は、私は、これはサイファーで動作するようになった:

*1..2は「友人や友人の友人」という意味
START v=node(1) MATCH v-[:contains*1..2]->i RETURN v,i 

は、私は多分 LoopVが進むべき道だと思ったが、私はちょうど Exceptionを得る:

エラーがJsonReaderからJArrayを読みました。現在のJsonReaderアイテムは配列ではありません:String

答えて

3

Gremlin 1.4以降では、次のことができます。

g.v(1).out('contains').loop(1){true}{it.out('contains').count() == 0} 

これは言う:ID 1

  • と頂点で

    1. スタートは、発信を取るエッジ "を含みます"。
    2. ループオーバーアウト( 'contains')セクション。
    3. ループ「無限に」(ツリーにループがないことを確認してください)
    4. 「contains」エッジがさらに出てこない頂点だけを放出します。 (すなわち、葉)

    しかし、あなたがCypherから望んでいたものを見れば、2段階だけが必要なように見えます。このように、ということを行うには、単に実行します。

    g.v(1).out('contains').loop(1){it.loops < 3} 
    

    はおそらく、私はあなたの質問を誤解---でプレイするのに十分なあなたを与える必要がありますいずれかの方法を、。

  • 関連する問題