Arangodb 正在获取结果集的索引

Arangodb 正在获取结果集的索引,arangodb,aql,Arangodb,Aql,有没有办法在aql查询中获得结果的索引 差不多 FOR user IN Users sort user.age DESC RETURN{id:user.\u id,order:{index?}如果我正确理解您的问题,请随意更正,这就是您要找的: FOR user IN Users SORT user.age DESC RETURN { id: user._id, order: user._key

有没有办法在aql查询中获得结果的索引

差不多
FOR user IN Users sort user.age DESC RETURN{id:user.\u id,order:{index?}

如果我正确理解您的问题,请随意更正,这就是您要找的:

FOR user IN Users
    SORT user.age DESC
    RETURN {
                id: user._id,
                order: user._key
            }
_键是ArangoDB中的主键

但是,如果要查找输入的示例数据(按时间顺序),则必须在插入项上设置键和/或创建日期/时间对象并使用该对象进行筛选

编辑:


在做了一些研究后,我相信此链接可能对AI键有用:

如果您想枚举结果集并将这些数字存储在属性
顺序中,则可以使用以下AQL查询:

LET sorted_ids = (
  FOR user IN Users
    SORT user.age DESC
    RETURN user._key
)
FOR i IN 0..LENGTH(sorted_ids)-1
  UPDATE sorted_ids[i] WITH { order: i+1 } IN Users
  RETURN NEW
子查询用于按年龄对用户进行排序,并返回文档键数组。然后,使用从该数组的第一个索引到最后一个索引的数值范围内的循环对其元素进行迭代,从而将所需的顺序值(减1)作为变量
i
。当前数组元素是一个文档键,用于使用order属性更新用户文档

上述查询对于订单属性的一次性计算非常有用。如果您的数据变化很大,那么它很快就会过时,您可能希望将其移动到客户端


有关相关讨论,请参见

实际上,我想要的是获得结果的排名。因为它是排序的,第一个会有排名1,第二个会有排名2,依此类推…@SankaDarshana你想要排名还是实际列举结果?一组数字25、25和47的等级为1、1和3。密集等级为1、1和2。枚举,你会得到1,2,3。枚举在我看来是最不有用的,因为它是结果数组的一个间接属性。@CoDEmanX的思想是计算一次结果集的顺序,并出于性能原因保存它。