获取结果集的索引

时间:2018-09-04 03:15:04

标签: arangodb aql

是否可以获取aql查询中结果的索引?

类似 FOR user IN Users sort user.age DESC RETURN {id:user._id, order:{index?}}

2 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题-并且随时可以纠正我,这就是您要查找的内容:

text += `<tr><td>${data.works[i].title}</td>
    <td>${data.works[i].authors[i].name}</td>
    <td>${data.name}</td></tr>`;

_key是ArangoDB中的主键。

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

编辑:

在进行一些研究后,我相信此链接可能对AI有用:https://www.arangodb.com/2013/03/auto-increment-values-in-arangodb/

答案 1 :(得分:0)

如果要枚举结果集并将这些数字存储在属性order中,则可以通过以下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属性更新用户文档。

上面的查询对于订单属性的一次性计算很有用。如果您的数据变化很大,那么它将很快变得过时,因此您可能希望将其移至客户端。

有关讨论,请参见AQL: Counter / enumerator