Вы не можете сначала упорядочить по количеству баллов, поскольку ни один индекс не может поддержать этот запрос.
Решение / обходной путь, который я видел рекомендованным, состоит в том, чтобы выбрать несколько заранее определенных возрастных диапазонов, предварительно вычислить членство каждого Person
в этих диапазонах, а затем использовать фильтр равенства для этого членства, чтобы вы могли score
.
Например, если вы выбрали «<13», «13-18» и «18+» в качестве возрастного диапазона, вы добавите три логических свойства к каждому <code>Person. Затем вы можете выполнить запрос типа «выбрать * из персоны, где isUnder13 = истинный порядок по счету». Я думаю, в этом случае, поскольку членство является взаимоисключающим, вы можете использовать одно свойство enum и искать что-то вроде ageRange = 'UNDER_13'
, что сократит количество построенных индексов.
Конечно, это означает, что у вас не может быть произвольной функции поиска ... но наличие меньшего количества вариантов не всегда плохо для пользовательского опыта.