GroupCount 排序方式
GroupCount order by
下面 simplegraph-core 测试套件中的单元测试代码显示了机场的区域数量,但它没有像我预期的那样排序。
结果开头为:
NZ-BOP= 3
MZ-A= 1
MZ-B= 1
IN-TN= 5
MZ-N= 1
PW-004= 1
MZ-I= 2
BS-FP= 1
IN-TR= 1
MZ-T= 1
BJ-AQ= 1
GB-ENG= 27
我调查了
并在标记为 gremlin 的问题中搜索 "GroupCount" 无济于事
需要什么来修复排序?
@Test
public void testSortedGroupCount() throws Exception {
Graph graph = getAirRoutes();
GraphTraversalSource g = graph.traversal();
Map<Object, Long> counts = g.V().hasLabel("airport").groupCount()
.by("region").order().by(Order.decr).next();
assertEquals(1473, counts.size());
for (Object key : counts.keySet()) {
System.out.println(String.format("%s=%3d", key, counts.get(key)));
}
}
您需要订购具有 local
范围的 values
:
g.V().hasLabel("airport").
groupCount().
by("region").
order(local).
by(values, Order.decr)
使用 local
范围,您在当前遍历器中排序(即排序遍历中每个 Map
的内容)。
@Test
public void testSortedGroupCount() throws Exception {
Graph graph = getAirRoutes();
GraphTraversalSource g = graph.traversal();
Map<Object, Long> counts = g.V().hasLabel("airport").groupCount()
.by("region").order(Scope.local).by(Column.values,Order.decr).next();
//
assertEquals(1473, counts.size());
assertEquals("LinkedHashMap",counts.getClass().getSimpleName());
debug=true;
if (debug)
for (Object key : counts.keySet()) {
System.out.println(String.format("%s=%3d", key, counts.get(key)));
}
}
然后会显示:
US-AK=149
AU-QLD= 50
CA-ON= 46
CA-QC= 44
PF-U-A= 30
US-CA= 29
仅使用Gremlin 语言,您可以使用展开方法来完成。如果您需要 运行 通过 REST API.
进行查询,这可能很有用
g.V()
.hasLabel("airport")
.values("region")
.groupCount()
.unfold()
.order()
.by(values)
下面 simplegraph-core 测试套件中的单元测试代码显示了机场的区域数量,但它没有像我预期的那样排序。
结果开头为:
NZ-BOP= 3
MZ-A= 1
MZ-B= 1
IN-TN= 5
MZ-N= 1
PW-004= 1
MZ-I= 2
BS-FP= 1
IN-TR= 1
MZ-T= 1
BJ-AQ= 1
GB-ENG= 27
我调查了
并在标记为 gremlin 的问题中搜索 "GroupCount" 无济于事
需要什么来修复排序?
@Test
public void testSortedGroupCount() throws Exception {
Graph graph = getAirRoutes();
GraphTraversalSource g = graph.traversal();
Map<Object, Long> counts = g.V().hasLabel("airport").groupCount()
.by("region").order().by(Order.decr).next();
assertEquals(1473, counts.size());
for (Object key : counts.keySet()) {
System.out.println(String.format("%s=%3d", key, counts.get(key)));
}
}
您需要订购具有 local
范围的 values
:
g.V().hasLabel("airport").
groupCount().
by("region").
order(local).
by(values, Order.decr)
使用 local
范围,您在当前遍历器中排序(即排序遍历中每个 Map
的内容)。
@Test
public void testSortedGroupCount() throws Exception {
Graph graph = getAirRoutes();
GraphTraversalSource g = graph.traversal();
Map<Object, Long> counts = g.V().hasLabel("airport").groupCount()
.by("region").order(Scope.local).by(Column.values,Order.decr).next();
//
assertEquals(1473, counts.size());
assertEquals("LinkedHashMap",counts.getClass().getSimpleName());
debug=true;
if (debug)
for (Object key : counts.keySet()) {
System.out.println(String.format("%s=%3d", key, counts.get(key)));
}
}
然后会显示:
US-AK=149
AU-QLD= 50
CA-ON= 46
CA-QC= 44
PF-U-A= 30
US-CA= 29
仅使用Gremlin 语言,您可以使用展开方法来完成。如果您需要 运行 通过 REST API.
进行查询,这可能很有用g.V()
.hasLabel("airport")
.values("region")
.groupCount()
.unfold()
.order()
.by(values)