微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Mongo db 按计算排序

如何解决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 举报,一经查实,本站将立刻删除。