如何将 "join" 个顶点及其边数作为 JanusGraph 或 Gremlin 中这些顶点的 'property' 个?

How to "join" vertices and the count of their edges as a 'property' of those vertices in JanusGraph or Gremlin?

我需要 return 个 'posts' 个顶点,但是那些帖子有一些 'like' 个边,我如何 return 'likes' 个边的数量对于该帖子作为该边缘的 属性,如下所示:

{ 标题: 'lorem ipsum.....', 内容:'yadayadayada', 喜欢:6 <---- }

以 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]

它returns "a"中顶点的属性和"created"条边的数量。您也可以选择使用 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]