我有一个泰坦图形数据库难熬组通过一个名为“property1”属性的边连接的顶点。
是否可以查询写一个小鬼(或其他任何泰坦将支持)来:
Find all edges that have a value for "property1" that is seen 5 or less times.
在SQL我会使用“分组依据”,MongoDB中我会使用的聚合函数之一。
我想这可能是炉/法乌努斯工作?
我有一个泰坦图形数据库难熬组通过一个名为“property1”属性的边连接的顶点。
是否可以查询写一个小鬼(或其他任何泰坦将支持)来:
Find all edges that have a value for "property1" that is seen 5 or less times.
在SQL我会使用“分组依据”,MongoDB中我会使用的聚合函数之一。
我想这可能是炉/法乌努斯工作?
您可以通过遍历所有的边缘,并使用做到这一点groupBy
。 下面是用玩具图的例子weight
代替property1
:
gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> g.E.groupBy{it.weight}{it}.cap.next()
==>0.5=[e[7][1-knows->2]]
==>1.0=[e[8][1-knows->4], e[10][4-created->5]]
==>0.4=[e[11][4-created->3], e[9][1-created->3]]
==>0.2=[e[12][6-created->3]]
所以这组通过其所有边缘weight
。 从那里,你可以下降到标准的常规功能,如findAll
过滤掉你不想要的东西(在这里我筛选出具有权重>1
边缘他们......在你的情况下,将<5
gremlin> g.E.groupBy{it.weight}{it}.cap.next().findAll{k,v->v.size()>1}
==>1.0=[e[8][1-knows->4], e[10][4-created->5]]
==>0.4=[e[11][4-created->3], e[9][1-created->3]]
显然,这是一个真正的大图有点昂贵的操作的,你有很多的迭代做了边缘,你必须建立一个Map
内存可能取决于价值观的多样性是大property1
。 如果你能找到方法来限制与其它过滤器边缘的迭代,可能会有所帮助。
如果你有一个真正的大图这将是法乌努斯一份好工作。 我会用简单的答案去,此地简单地说,你不一定要与一个特定的边缘property1
发生小于5倍的价值和你只是想知道不同的多少倍property1
值出现。 随着法乌努斯你可以得到这样一个分布:
g.E.property1.groupCount()