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

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

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

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

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

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

【问题讨论】:

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

标签: javascript mongodb meteor geolocation distance


【解决方案1】:

查看我的工作示例localgeogithub 上的来源

你可以这样找到:

   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/…
  • 是的,我已经看过了。它似乎没有任何优先级指示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-21
  • 2019-02-21
相关资源
最近更新 更多