Однако мне было интересно, есть ли способ указать сортировку по атрибуту create_date, а не по расстоянию ...
Если вы используете команду $near
, тогдаВы должны сначала отсортировать по расстоянию, или понятие «рядом» не имеет никакого смысла.На глобусе все может быть «близко» к данной точке, это просто вопрос «насколько близко».
У вас есть два варианта здесь:
- ограничить результаты
$near
- используйте команду
$within
Я думаю, что вам нужна команда $within
center = [50, 50]
radius = 10
db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})
Вы можете затем отсортироватьэто с помощью некоторого другого ключа:
db.places.find(...).sort({created:1})
Тем не менее, команда inside может выдавать слишком много результатов, поэтому вы, возможно, захотите применить некоторую логику, чтобы ограничить число возвращаемых элементов $within
.
db.places.find(...).limit(50).sort({created:1})
По правде говоря, если вы достигнете определенного предела, значение вашей команды $within
обычно начинает падать.Ваш код клиента может захотеть проверить, достигли ли вы максимальных результатов.