Зависит от того, как вы квалифицируете «старые» документы. Если это по дате, то вы можете просто убедиться, что у каждого документа есть атрибут numberri c timestamp. Я использую функцию AQL DATE_NOW()
или (new Date()).valueOf()
в JavaScript. Затем просто добавьте индекс skiplist к атрибуту отметки времени, позволяя почти мгновенно сортировать и / или фильтровать по номерам, большим или меньшим, чем x
.
LET millisecondsAgo = (8 * 60 * 60 * 1000) // 8 hours
FOR a IN collection_a
FILTER a.timestamp < (DATE_NOW() - millisecondsAgo)
REMOVE a IN collection_a
Если «старый» означает что-то еще, например, «существует ли этот документ в другой коллекции», тогда лучше всего иметь соответствующий ключ поиска. Это может быть атрибут _key
или другой, но он должен быть уникальным. Я использую это для согласования «существующих» документов между коллекциями:
FOR a IN collection_a
FILTER LENGTH(
FOR b IN collection_b
FILTER b.uniqueKey == a.uniqueKey
RETURN true
) == 0
REMOVE a IN collection_a
Должен быть га sh индекс (называемый «постоянный индекс» в пользовательском интерфейсе, уникальный - это хорошо, но не обязательно) на collection_a
и collection_b
на uniqueKey
. Затем запрос FOR b IN collection_b ...
будет очень быстро совпадать с использованием индекса, возвращая true
, если что-то будет найдено. Если не найдено ни одной записи, ничего не возвращается, поэтому возвращаемый массив имеет нулевую длину. Ха sh поиск ключей + вычисление длины очень маленького массива должно быть очень быстро.