簡體   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