问题描述
在对给定节点端点的请求中,我从 request.query 获取地图位置的中心。我想通过径向距离找到最接近该点的前 100 个响应。为此,我需要对每个点使用勾股定理,然后按升序对结果进行排序。我无法理解聚合管道的工作原理和传递变量等...
每个房子都有一个关键位置,其中包含关键的经度和纬度:
Home:{
other keys...,location: {
longitude: {
type: Number,required: true,},latitude: {
type: Number,}
每个房子的距离计算:
((location.longitude - centerLongitude)^2 + (location.latitude - centerLatitude)^2)^(1/2)
const centerLongitude = 53.23212 //number that comes back from req.query
const centerLatitude = 53.23212 //number that comes back from req.query
Houses.aggregate([
{ $match: {} },{
$project: {
$longdistanceSqrd: {
$pow: [{ $subtract: ["$location.longitude",centerLongitude] },2],$latdistanceSqrd: {
$pow: [{ $subtract: ["$location.latitude",centerLatitude] },{
$sort: {
$sqrt: {
$distance: {
$sum: [$latdistanceSqrd,$longdistanceSqrd],])
提前为帮助干杯
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)