Edw*_*own 3 sorting select group-by gremlin
像这样进行遍历:
g.V().as('a')......has(name,'test').as('b').....select('a','b')
Run Code Online (Sandbox Code Playgroud)
此时,现在我已经存储并选择了“a”和“b”,我想识别具有高属性值的一个(例如a.score==2,,b.score==4所以选择“b”)
我该怎么做?
如果为路径上的每个候选人提供相同的标签,那就更容易了:
g.V().as('a')....
  has('name,'test').as('a').
  select(all, 'a').
  order(local).
    by('score', decr).
  limit(local, 1)
Run Code Online (Sandbox Code Playgroud)
这是它在现代玩具图上的样子:
gremlin> g = TinkerFactory.createModern().traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V().as('a').out('knows').as('a').select(all, 'a')
==>[v[1],v[2]]
==>[v[1],v[4]]
gremlin> g.V().as('a').out('knows').as('a').
......1>   select(all, 'a').
......2>     by(unfold().valueMap(true).fold())
==>[[label:person,name:[marko],age:[29],id:1],[label:person,name:[vadas],age:[27],id:2]]
==>[[label:person,name:[marko],age:[29],id:1],[label:person,name:[josh],age:[32],id:4]]
Run Code Online (Sandbox Code Playgroud)
此时我们知道v[1]第一条路径的预期结果是 (29 > 27),v[4]第二条路径的预期结果是 (32 > 29)。
gremlin> g.V().as('a').out('knows').as('a').
......1>   select(all, 'a').
......2>   order(local).
......3>     by('age', decr).
......4>   limit(local, 1)
==>v[1]
==>v[4]
Run Code Online (Sandbox Code Playgroud)