用于查找最高价值的集合的查询代码?

Query code for finding highest value of collections?

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

您可以使用 SORTLIMIT 来完成。例如:

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

这将 return _key 列中的最高值。可以换一个专栏。

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

RETURN MAX(collection[*].value)

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

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

如果要return值最高的文档,那么可以降序排序,return第一个文档:

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

请注意,可能有多个文档具有相同的最高值,除非字段上的索引具有唯一性约束。如果你想return所有具有最高值的文档,那么你可以先在子查询中确定最高值,然后按该值过滤:

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