2017-09-26 26 views
0

私は 'posts'の頂点を返す必要がありますが、それらのポストは 'like'エッジを持っています。このようなエッジのプロパティとして、そのポストの「likes」エッジのカウントを返すにはどうすればいいですか?JanusGraphやGremlinの頂点の「プロパティ」として頂点とそのエッジの数を「結合する」方法は?

{タイトル: 'Loremのイプサム.....'、 内容: 'yadayadayada'、 好き:6 < ---- }

答えて

5

例としてTinkerPopの近代的なおもちゃのグラフを使用して、あなたが何かを行うことができますこのように:

gremlin> g.V().as('a'). 
......1> map(outE('created').count()).as('count'). 
......2> select('a','count').by(valueMap()).by() 
==>[a:[name:[marko],age:[29]],count:1] 
==>[a:[name:[vadas],age:[27]],count:0] 
==>[a:[name:[lop],lang:[java]],count:0] 
==>[a:[name:[josh],age:[32]],count:2] 
==>[a:[name:[ripple],lang:[java]],count:0] 
==>[a:[name:[peter],age:[35]],count:1] 

"a"の頂点のプロパティと "作成された"辺の数を返します。またproject()を使用することを選択するかもしれません:

gremlin> g.V(). 
......1> project('a','knows','created'). 
......2>  by(valueMap()). 
......3>  by(outE('knows').count()). 
......4>  by(outE('created').count()) 
==>[a:[name:[marko],age:[29]],knows:2,created:1] 
==>[a:[name:[vadas],age:[27]],knows:0,created:0] 
==>[a:[name:[lop],lang:[java]],knows:0,created:0] 
==>[a:[name:[josh],age:[32]],knows:0,created:2] 
==>[a:[name:[ripple],lang:[java]],knows:0,created:0] 
==>[a:[name:[peter],age:[35]],knows:0,created:1] 
+0

なぜこの最後の空で()? –

+1

'()'の 'by()'モジュレータはラウンドロビン方式で適用されるので、空の 'by()'を加えずに "count"をそのまま渡すと、Gremlinは'valueMap()'をそれに適用すると、 'valueMap()'を 'count'の' Long'値に適用しようとするとエラーが発生します。 –

+0

Gremlinについてもっと深く理解するためにはいくつかの資料が必要ですが、ドキュメンテーションは混乱しており、より相互に関連した方法で説明することはできません。 私は "gremlin"と "tinkerpop"のためにセッキングしていますが、より関連性の高い資料を見つけるためのより良いキーワードがありますか? –

関連する問題