在 Meteor 中按与当前用户的距离对用户进行反应性排序?

Posted

技术标签:

【中文标题】在 Meteor 中按与当前用户的距离对用户进行反应性排序?【英文标题】:Sort users by distance from current user reactively in Meteor? 【发布时间】:2014-10-13 20:37:04 【问题描述】:

在根据各种数据处理出版物的反应性排序时,我有 already been 在流星中面对 issues。每次,我都没有找到我想要实现的目标的真正答案,我最终放弃了,只是决定“不要那样构建我的应用程序”,这总是让我非常难过。

现在,也许我可以简单地表述这个问题,以便得到一个建设性且非常有趣的答案。我认为这听起来应该可以在 Meteor 应用程序中完成,所以这里是:

我将用户的位置存储在我的 Accounts.users 集合中的“lat”和“lon”变量中。我希望当前用户获得一个列表,例如,与他或她最近的 10 个用户。考虑到获得与纬度和经度之间的距离所需的seemingly complicated 操作集,我该怎么做?

据我所知,在 MongoDB 查询条件中插入这样的等式几乎是不可能的。那么其他人是如何实现这一壮举的呢?

我将不胜感激有关此问题的任何见解,尽管它可能是理论上的。

【问题讨论】:

如果使用mysql,可以支持空间特征,支持各种GIS功能。有关某人正在计算距离的示例,请参见 ***.com/questions/11436396/…。 谢谢!非常有趣,将对其进行研究:) 虽然,Meteor 不允许除 MongoDB 之外的任何其他 DBMS。 :/ 我听说有一种方法可以让它与 MySQL 一起工作,但我并不急于开始修改。 $near 运算符不做你想做的事吗? 哇,mongodb 有一个操作符?!谢谢,试试这个! 不要忘记正确的数据类型和索引。 【参考方案1】:

查看我的工作示例localgeo 和github 上的来源

你可以这样找到:

   var nearMarkers = allMarkers.find(
      location: 
        $near: 
          $geometry: 
            type: "Point",
            coordinates: location
          ,
          $maxDistance: radius
        
      
    );

位置是 MongoDB 的 type。请记住:在 MongoDB Lng - 首先,Lat - 其次,我不知道为什么。我在客户端做,但你可以用同样的方式发布,取决于半径。

【讨论】:

$near 排序图如何转换为其他排序修饰符?例如,如果我在服务器上的find 方法中使用sort 作为选项,它会先按距离排序,然后按其他因素排序,还是相反? 我没有答案,但在 MongoDB 文档中我发现了这个:docs.mongodb.org/manual/reference/operator/query/near/… 是的,我已经看过了。它似乎没有任何优先级指示。

以上是关于在 Meteor 中按与当前用户的距离对用户进行反应性排序?的主要内容,如果未能解决你的问题,请参考以下文章

按与当前位置的距离对 TableView 进行排序

使用空间分析函数和数据类型在 MySQL 中按距离排序

Swift如何按距离对表格视图进行排序

在 Swift 中按计算的距离对数组进行排序

在 ONGR ElasticsearchDSL 中按距离对结果进行排序

如何在javascripts中按经纬度距离对数组项进行排序?