geoNear查詢 near查詢的升級版


geoNear查詢可以看作是near查詢點進化版
geoNear查詢使用runCommand命令進行使用,常用使用如下:
db.runCommand({
  geoNear:<collection>,
  near:[x,y],
  minDistance:(對2d索引無效,對2dsphere有效),
  maxDistance:
  num:
  ...
})

 

geoNear的返回比near多了一些數據
> db.runCommand({geoNear:'location',near:[1,2],maxDistance:10,num:1})
{
    "results" : [
        {
            "dis" : 0,
            "obj" : {
                "_id" : ObjectId("5b6b6fa872ff7510af7fc784"),
                "w" : [
                    1,
                    2
                ]
            }
        }
    ],
    "stats" : {
        "nscanned" : 3,
        "objectsLoaded" : 1,
        "avgDistance" : 0,
        "maxDistance" : 0,
        "time" : 3396
    },
    "ok" : 1
}
有3個,第一個是results,表明查詢到的數據,第二個是stats,指的是查詢的一些參數,第三個ok為1代表查詢成功。

 

其中stats,nscanned表明掃碼了哪些數據,time是花費的時間,maxDistance最大的距離,avgDistance平均距離,
results中,dis是distance的縮寫,代表查找到的數據的距離,離我們<1,2>的距離。obj是查找到的文檔,如果將num限制為2,
db.runCommand({geoNear:'location',near:[1,2],maxDistance:10,num:2})
{
    "results" : [
        {
            "dis" : 0,
            "obj" : {
                "_id" : ObjectId("5b6b6fa872ff7510af7fc784"),
                "w" : [
                    1,
                    2
                ]
            }
        },
        {
            "dis" : 1,
            "obj" : {
                "_id" : ObjectId("5b6b6fa572ff7510af7fc783"),
                "w" : [
                    1,
                    1
                ]
            }
        }
    ],
    "stats" : {
        "nscanned" : 32,
        "objectsLoaded" : 2,
        "avgDistance" : 0.5,
        "maxDistance" : 1,
        "time" : 3340
    },
    "ok" : 1
}
obj返回兩個數據


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM