mongodb建立2D索引
阿新 • • 發佈:2019-02-15
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})