在 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 中按与当前用户的距离对用户进行反应性排序?的主要内容,如果未能解决你的问题,请参考以下文章