Вопрос в том, что на самом деле должны означать следующие документы.
Если следующий здесь означает порядок индексации ключей документа:
У документа нет определенного «порядка» или «индекса» внутри коллекции. Документы в коллекции упорядочены по их атрибуту _key
/ _id
в несортированном первичном индексе.
Чтобы перейти к следующему ключу документа (предположим, что ключи отсортированы лексикографически), нужно прочитать все ключи коллекции, отсортировать их и каким-то образом найти индекс текущего документа, чтобы перейти к следующему ключу. Это было бы ужасно неэффективно.
Другие индексы в коллекции необязательны, поэтому нельзя полагаться на их наличие и возможность использования для такого запроса.
Если здесь следующий означает порядок вставки или обновления, то также нет разумного способа перейти к следующим документам.
Обходной путь может заключаться в использовании отсортированного (например, skiplist) индекса для некоторого атрибута документа, в идеале уникального, и заполнения его всякий раз, когда документ вставляется (и, возможно, обновляется, если обновления также должны изменить порядок документа).
Затем, чтобы найти следующие документы, сделайте следующее:
сначала найдите нужный документ по его _id
или _key
и загрузите данные документа в приложение
получить атрибут документа, на котором есть отсортированный индекс, и использовать его в последующем запросе AQL следующим образом
Это позволит вам найти документы, следующие за исходным, однако вы должны каким-то образом сохранить атрибут порядка:
FOR doc IN collection
FILTER doc.`order` > @value
LIMIT 0, 30
RETURN doc
Это будет легко сделать, если в ваших документах есть какой-то атрибут, который в любом случае можно использовать для заказа, но будет неуклюжим решением, если у них нет такого атрибута.
person
stj
schedule
20.11.2015