繁体   English   中英

MongoDB-输出距离,无需排序

[英]MongoDB - output distance without sorting

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

该命令和操作员还按距离对结果进行排序。

有没有一种方法可以输出距离而不按距离排序? 即使用一些投影运算符。 显然,这可以通过使用带有javascript函数的map来手动计算距离来完成,但似乎有一个内置的距离计算功能必须更高效。 另外,使用$geoNear运算符似乎效率低下,之后(在聚合管道中)求助于结果...对吗?

谢谢

由于$geoNear查询的num和limit参数(它们是互斥的-如果同时存在num覆盖限制,请参阅docs ),结果必须按距离排序以确定要返回的结果。 因此,实际上,在返回排序后的结果时无需进行任何额外的工作。 据我所知,不可能返回未按距离排序的结果。

这在分片的情况下特别有意义,因为分片目前无法在地理键上完成,因为必须将查询发送到所有分片,然后根据num和/或limit的值组合并返回结果。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM