首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MongoDB -不排序的输出距离

MongoDB -不排序的输出距离
EN

Stack Overflow用户
提问于 2015-02-10 20:00:38
回答 1查看 344关注 0票数 0

我是MongoDB的新手,我直接跳到了地理空间查询的深水区。我注意到geoNear命令和$geoNear聚合操作符可以输出计算出的距离(使用distanceField)。

该命令和运算符还按距离对结果进行排序。

有没有一种方法可以输出距离而不按距离排序?即使用某种投影运算符。这显然可以使用带有javascript函数的map手动计算距离,但似乎有一个内置的距离计算函数必须更高效。此外,使用$geoNear运算符,然后(在聚合管道中)对结果进行排序似乎效率很低……对吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-02-10 23:38:33

由于$geoNear查询的num和limit参数(这两个参数是互斥的--如果这两个参数都存在,则使用num覆盖限制,请参见docs),因此必须按距离对结果进行排序,以确定返回哪些结果。因此,实际上,返回排序后的结果并不需要额外的工作。据我所知,不按距离排序返回结果是不可能的。

这在分片的情况下特别有意义,因为查询必须发送到所有分片,然后根据num和/或geo key的值组合并返回结果。

MongoDB不像一些空间数据库那样使用R树索引,这可以使距离搜索更有效率,而是使用地理散列上的B树,因此距离查询将通过比较最近象限中的距离来工作,直到找到足够的数字,这可能大于num或limit,然后在对距离进行排序后仅返回该数字。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28431131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档