【问题标题】:Select specific array elements of gremlin query result选择 gremlin 查询结果的特定数组元素
【发布时间】:2019-08-06 09:57:26
【问题描述】:

我有一个包含产品和订单的数据集。对于给定的产品(此处为 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)

返回

==>[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 给了我一个包含所有结果的数组,所以我不能使用限制步骤或范围步骤。如何只选择数组的前五个条目?

【问题讨论】:

    标签: gremlin azure-cosmosdb-gremlinapi


    【解决方案1】:

    请注意,groupCount() 返回的是 Map 而不是“数组”。另外,请注意,您已经在使用该机制来做您想做的事情 - Scope.locallimit()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)
    

    【讨论】:

    • 非常感谢。我现在明白了很多。
    猜你喜欢
    • 2020-02-20
    • 2018-05-01
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多