sorting - 如何使用 AQL 通过排序索引来抵消限制?
问题描述
我有一个member
s 的文档集合,它具有两个相关属性:_key
和score
. 我还在persistent
该字段上创建了一个索引score
,因为这应该可以显着加快排序速度。我想编写一个 AQL 查询,根据特定成员(简称 A)的排序索引返回不同的结果:
- 始终至少返回前 5 个成员 by
score
。(LIMIT 5
) - 如果 A 在前 10 名,则返回 6 - 10 名的成员。(
LIMIT 5, 5
) - 否则,返回排名直接高于和低于 A 的成员。(
LIMIT x - 1, 3
, x = A 的等级)
解决方案
我无法在单个查询中执行此操作,但是我能够通过执行以下操作来获取成员的等级
RETURN LENGTH(
FOR m IN members
FILTER m.score > DOCUMENT("members", "ID").score
RETURN 1
) + 1
然后使用第二个查询来获取我想要的排名数据,比如
FOR m IN members
SORT m.score DESC LIMIT 10
RETURN m
LIMIT 5
或LIMIT rank - 2, 3
根据等级加入两个子查询。
推荐阅读
- android - 如何让片段中的多个视图调用片段类中声明的相同 onClick 函数?
- javascript - Javascript - 有条件地选择while循环的条件
- python - TypeError: unhashable type: 'numpy.ndarray' - 张量流 - Numpy
- c# - Asp.net core Identity 不适用于微服务
- python - 仅过滤当前月份的数据集
- django - Django 3 CheckConstraints m2m 字段
- typescript - 如何使用参数中的keyof值根据接口定义另一个参数的类型
- arrays - 使用 ConverFrom-JSON 和 ConvertTo-Json cmdlet 时如何在 PowerShell 中保留 NESTED JSON 结构
- python - 为什么在 hassattr() 中调用 Python 中描述符的 __get__ 方法?
- elasticsearch - 如果没有特殊字符,“match”和“simple_query_string”之间有区别吗?