Вы можете сделать что-то подобное ниже:
Rest.aggregate([
{
$geoNear: {
near: {
type: "Point",
coordinates: [parseFloat(req.body.lng), parseFloat(req.body.lat)]
},
maxDistance: 100000,
spherical: true,
distanceField: "dist.calculated"
}
},
{
$project: {
rest_status: 1,
rest_address: 1,
rest_name: 1,
rest_contact: 1,
rest_photo: 1,
rest_menu: 1,
rest_avg_rating: 1
}
}
//even you can add limit skip below , if u need
,{$limit:},
{ $skip: }
]
//depends on your mongo version you may need to set cursor as well.
,
{ cursor: { batchSize: } }
)
.then()
.catch();
Примечание: перед выполнением запроса убедитесь, что вы добавили индекс 2dsphere
в поле dist.calculated
в случае аггегата $project
используется для того, что вы хотите сделать с .select
вместо использования .near()
, я использовал $geoNear
[ 1112].
Если вы хотите использовать предельный пропуск, вы можете последовать примеру, другие мудрые могут удалить это.
Вы также можете добавить поля distanceMultiplier
и includeLocs
в зависимости от ваших требований.
выше, зависит от версии mongoDB, которую вам может понадобиться использовать cursor
в совокупности.
если нет, вы можете идти вперед без использования cursor
.
Надеюсь, это поможет.
Если вы все еще получаете ошибку, пожалуйста, прокомментируйте.
Немного поиска с помощью Google, кажется, показывает, что существует не создано в эквиваленте C# для LinkedHashMap, но существуют некоторые сторонние доступные опции.
Просто для уточнения немного для читателей: LinkedHashMap только ведет себя тот путь при создании с одной конкретной перегрузкой конструктора. Обычно элементы сохраняются в порядке вставки. (Это чувствует себя немного нечетным мне, но не имеет значения.)
я не полагаю, что в.NET существует любой такой класс. Не было бы слишком трудно создать один, с помощью связанного списка элементов и словаря от ключа до узла связанного списка. Доступ затем состоял бы из выборки узла связанного списка, перемещения его голове и возвращению значения.
я был бы рад реализовать его сегодня вечером или завтра если Вы хотите - хотя, вероятно, не с полными модульными тестами и т.д. (Полностью тестирующий набор трудоемкий бизнес!)
Вот реализация C #, которую я нашел на форуме :
Она недокументирована, но содержит некоторые тесты. Однако это не является универсальным. По крайней мере, я так думаю.
@Jon: Я тоже был бы признателен, если бы вы могли быстро реализовать. Я полагал, что лучше всего использовать словарь поверх LinkedList, но я слышал , что есть проблемы со сборкой мусора с LinkedList, которые замедляют работу.