Mongo db 按计算排序

问题描述

在对给定节点端点的请求中,我从 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 (将#修改为@)