如何在“JanusGraph”或“Gremlin”中将“连接”顶点及其边的数量作为这些顶点的“属性”?

问题描述:

我需要返回“帖子”的顶点,但这些职位有一些“喜欢”的边缘,我怎么能返回的“喜欢”边缘计数为岗位作为边的属性,如:如何在“JanusGraph”或“Gremlin”中将“连接”顶点及其边的数量作为这些顶点的“属性”?

{标题: 'Lorem存有.....', 内容: '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] 

它返回“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

当您select()''by()'调制器以循环方式应用时,所以如果您不添加空的'by()'以不改变地通过“count”,Gremlin将尝试应用一个'valueMap()',这会导致一个错误,因为您将尝试将'valueMap()'应用于'count'的'Long'值。 –

+0

我需要一些材料来深入了解Gremlin,文档很混乱,并且没有以更相互关联的方式解释事情,有人可以推荐一些视频,书籍或类似的东西的材料吗? 我在寻找“gremlin”和“tinkerpop”,有更好的关键词来找到更多相关的材料吗? –