我正在寻找最喜欢的节点,所以基本上是度中心性食谱。这个查询是可行的,但是我想返回完整的顶点(包括属性),而不仅仅是id。
(我正在使用Tinkerpop3.0.1-孵化中)
g.V()
.where( inE("likes") )
.group()
.by()
.by( inE("likes").count() )结果
{
"8240": [
2
],
"8280": [
1
],
"12376": [
1
],
"24704": [
1
],
"40976": [
1
]
}发布于 2017-04-09 20:39:37
您可能正在寻找使用传递给by()调制器的匿名遍历的order步骤:
g.V().order().by(inE('likes').count(), decr)注意:这将需要迭代Titan v1.0.0中的所有顶点,并且此查询无法优化,它仅适用于OLTP中较小的图。
要获得最多的10个赞:
g.V().order().by(inE('likes').count(), decr).limit(10)如果您想获得完整的属性,只需在查询上链接.valueMap()或.valueMap(true) (对于id和label)。
另请参阅:
发布于 2017-04-11 18:30:46
由于GraphSON是基于JSON的,所以它不支持将复杂对象转换为键。JSON中的键必须是基于字符串的,并且不能是映射。为了解决这个JSON限制,GraphSON通过Java的toString()或通过其他方法将复杂对象转换为某些对象的键,比如图形元素(它返回元素标识符的字符串表示,解释为什么会收到这样的输出)。
如果您希望在使用GraphSON时返回元素的属性,则必须找到一种解决方法。在此特定情况下,您可以执行以下操作:
gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V().group().
......1> by(id).
......2> by(union(__(), outE('knows').count()).fold())
==>[1:[v[1],2],2:[0,v[2]],3:[v[3],0],4:[0,v[4]],5:[v[5],0],6:[0,v[6]]]通过这种方式,您可以获得顶点标识符作为地图id,并且在值中您可以获得完整的顶点加上计数。TinkerPop正在努力改进这个问题,但我不希望很快就能解决。
https://stackoverflow.com/questions/43302782
复制相似问题