1. 程式人生 > >mongodb建立2D索引

mongodb建立2D索引

1、 MongoDB支援二維空間索引,這是設計時考慮到基於位置的查詢。 如果需要使用這種索引,應確定物件中儲存的欄位是子物件或陣列,前兩個元素為X,Y座標

2、插入資料

     db.location.insert({"loc":[20,20]});

3、建立索引

     db.location.ensuerIndex({"loc":"2d"});

4、$near查詢

     db.location.find({"loc":{$near:[20,20]}}).limit(10);

    上面的一句將按離目標點(20,20)距離最近的10個點(距離倒序排列)

5、geoNear Command

      雖然find()語法為查詢的首選,Mongo也提供來了 geoNear 命令來執行相似的函式。geoNear命令有一個額外的好處是結果中返回距離目標點的距離,以及一些利於排除故障的資訊。

      db.runCommand({geoNear:"location",near:[20,20],num:2});

6、 Bounds Queries

     $within 引數可以代替$near來查詢一個形狀之內結果。同時,也支援$box(矩形)和$center(圓環)

    想要查詢一個一個矩形之內所有的點,必須制定該矩形的左下角和右上角座標:

   box = [[10,10],[40,40]]

   db.location.find({"loc":{$within:{"$box":box}}})


    查詢索引
    > db.test.getIndexes()


    刪除索引的命令:
    > db.test.dropIndex({"username":1})