我在亚马逊 - 海王星中使用Gremlin。我有顶点用户,国家,订单
我有优势和生活。从用户到国家,边缘购买'从用户到订单,边缘交付'从订单到国家
目标:找到向国外购买大部分订单的最顶级国家而不是按降序排列的live_in国家
gremlin> g.V().hasLabel("user").outE('purchased').inV().hasLabel("order").
......1> outE("delivered").inV().hasLabel("country").
......2> has('name').neq(outE('lives_in').inV().hasLabel("country").values()).
......3> groupCount().by(values)
我无法从步骤neq遍历到根顶点(outE(" lives_in"))
在删除最后一步后,我得到了相同的结果
gremlin> g.V().hasLabel("user").outE('purchased').inV().hasLabel("order").
......1> outE("delivered").inV().hasLabel("country")
这意味着我的最后一步没有执行。
结果样本 - {v [country_GB] = 38,v [country_NZ] = 6,v [country_AU] = 3}
答案 0 :(得分:3)
在您的问题中包含这样的小样本图总是有帮助的:
g.addV('user').as('u1').
addV('user').as('u2').
addV('order').as('o1').
addV('order').as('o2').
addV('order').as('o3').
addV('order').as('o4').
addV('order').as('o5').
addV('order').as('o6').
addV('country').property('name','usa').as('usa').
addV('country').property('name','candada').as('can').
addV('country').property('name','mexico').as('mex').
addE('lives_in').from('u1').to('usa').
addE('lives_in').from('u2').to('mex').
addE('purchased').from('u1').to('o1').
addE('purchased').from('u1').to('o2').
addE('purchased').from('u1').to('o3').
addE('purchased').from('u1').to('o4').
addE('purchased').from('u2').to('o5').
addE('purchased').from('u2').to('o6').
addE('delivered').from('o1').to('usa').
addE('delivered').from('o2').to('mex').
addE('delivered').from('o3').to('mex').
addE('delivered').from('o4').to('can').
addE('delivered').from('o5').to('mex').
addE('delivered').from('o6').to('can').iterate()
基于此,您可以采用以下一种方式:
gremlin> g.V().hasLabel("user").as('u').
......1> out('lives_in').hasLabel("country").as('c').
......2> select('u').
......3> out('purchased').hasLabel("order").
......4> out("delivered").hasLabel("country").
......5> where(neq('c')).
......6> groupCount().
......7> by('name')
==>[mexico:2,candada:2]
有几点需要注意:
inE().outV()
和outE().inV()
简化为in()
和out()
。