Я полагаю, что в конечном итоге вы получите список постов, которые имеют два дискретных измерения ранжирования, т.е.
{ age: 86400, distance: 1000 }
{ age: 172800, distance: 5000 }
{ age: 57600, distance: 20000 }
{ age: 288000, distance: 8000 }
Не имеет значения, какие единицы измерения, скажем, секунды и метры. Если вы хотите, чтобы оба влияли на ранжирование сортировки, то в итоге вы получаете алгоритм ранжирования, в простейшем случае что-то вроде этого:
rank = (C1 * age) + (C2 * distance)
Где C 1 и C 2 - это константы, которые можно настроить для настройки весов. Значения будут зависеть от того, какие единицы измерения вы используете, и какое влияние на ранжирование вы назначаете каждому измерению.
Другим вариантом может быть упорядочение сначала по совокупности времени, а затем по расстоянию, поэтому все сообщения за сегодняшний день упорядочены по расстоянию; с последующим заказанным вчера расстоянием и т. д. Или наоборот, упорядочение по диапазону расстояний, затем по возрасту, так что все в пределах (0-1000 м) упорядочено по возрасту; затем все в пределах (1001 - 2000 м) и т. д.