Select gremlin查询结果的具体数组元素
Select specific array elements of gremlin query result
我有一个包含产品和订单的数据集。对于给定的产品(此处为 PRODUCT 2),我想找到与 PRODUCT 2 组合订购最多的 5 种产品。
我已设法查询所有相关产品并按其频率对其进行排序。
g.V().has('PRODUCT', 'id', '2').as('a').in('purchased').out('purchased').where(neq('a')).groupCount().order(local).by(values, Order.decr)
returns
==>[4:3,6:2,7:2,12:2,13:2,14:2,15:2,1:1,3:1,5:1,8:1,9:1,10:1,11:1,16:1,17:1]
gremlin 给了我一个包含所有结果的数组,所以我不能使用限制步骤或范围步骤。我怎么能 select 只有数组的前五个条目?
请注意 groupCount()
returns 是 Map
而不是 "array"。另外,请注意,您已经在使用该机制来做您想做的事 - Scope.local
。 limit()
和 range()
都可以使用 Scope
所以你可以这样做:
g.V().has('PRODUCT', 'id', '2').as('a').
in('purchased').out('purchased').
where(neq('a')).
groupCount().
order(local).by(values, Order.decr).
limit(local,5)
值得记住的是 Map
只是一个集合,因此可以用 unfold()
解构为它的项目,在这种情况下:
g.V().has('PRODUCT', 'id', '2').as('a').
in('purchased').out('purchased').
where(neq('a')).
groupCount().
order(local).by(values, Order.decr).
unfold()
limit(5)
我有一个包含产品和订单的数据集。对于给定的产品(此处为 PRODUCT 2),我想找到与 PRODUCT 2 组合订购最多的 5 种产品。
我已设法查询所有相关产品并按其频率对其进行排序。
g.V().has('PRODUCT', 'id', '2').as('a').in('purchased').out('purchased').where(neq('a')).groupCount().order(local).by(values, Order.decr)
returns
==>[4:3,6:2,7:2,12:2,13:2,14:2,15:2,1:1,3:1,5:1,8:1,9:1,10:1,11:1,16:1,17:1]
gremlin 给了我一个包含所有结果的数组,所以我不能使用限制步骤或范围步骤。我怎么能 select 只有数组的前五个条目?
请注意 groupCount()
returns 是 Map
而不是 "array"。另外,请注意,您已经在使用该机制来做您想做的事 - Scope.local
。 limit()
和 range()
都可以使用 Scope
所以你可以这样做:
g.V().has('PRODUCT', 'id', '2').as('a').
in('purchased').out('purchased').
where(neq('a')).
groupCount().
order(local).by(values, Order.decr).
limit(local,5)
值得记住的是 Map
只是一个集合,因此可以用 unfold()
解构为它的项目,在这种情况下:
g.V().has('PRODUCT', 'id', '2').as('a').
in('purchased').out('purchased').
where(neq('a')).
groupCount().
order(local).by(values, Order.decr).
unfold()
limit(5)