查询代码以查找收藏的最高价值?

时间:2019-02-13 15:35:12

标签: arangodb aql

我是arango的新手,并且想要从一组集合中找到最高的值(位于内容对象中),我尝试使用MAX,但这没用。

2 个答案:

答案 0 :(得分:0)

您可以使用SORTLIMIT进行操作。例如:

FOR c IN collection
  LIMIT 1
  SORT c._key DESC
  RETURN c

这将在_key列中返回最大值。您可以将其与另一列交换。

答案 1 :(得分:0)

如果您只想知道最大值,而不是它所在的文档,那么最短的查询可能是:

Task<int> task4 = LoadAsync().ContinueWith(t => {
    var data = t.Result;
    return ComputeAsync(data).Result;
});
DoSomethingElse();
int result = await task4;

但是,尤其是在较大的数据集上,使用AGGREGATE进行以下查询应该更有效:

RETURN MAX(collection[*].value)

如果要返回具有最大价值的文档,则可以按降序排序并返回第一个文档:

FOR doc IN collection
  COLLECT AGGREGATE max = MAX(doc.value)
  RETURN max

请注意,除非字段上存在具有唯一性约束的索引,否则可能会有多个具有相同最大值的文档。如果要返回所有具有最高值的文档,则可以首先在子查询中确定最高值,然后按该值进行过滤:

FOR doc IN collection
  SORT doc.value DESC
  LIMIT 1
  RETURN doc