用于查找最高价值的集合的查询代码?
Query code for finding highest value of collections?
我是 arango 的新手,想从一组集合中找到最高值(位于内容对象中),我尝试使用 MAX 但没有用。
您可以使用 SORT
和 LIMIT
来完成。例如:
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
我是 arango 的新手,想从一组集合中找到最高值(位于内容对象中),我尝试使用 MAX 但没有用。
您可以使用 SORT
和 LIMIT
来完成。例如:
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