MongoDB小结26

现在有一种查询变得越来越流行(尤其是移动设备):找到离当前位置最近的N个场所。 MongoDB专为平面坐标查询做了专门的索引,称为地理空间索引。

同样需要用ensureIndex创建,不过,参数是两个 "2d"

db.map.ensureIndex({"gps":"2d"})

gps键的值必须是某种形式的一对值:一个包含两个元素的数组或者包含两个键的内嵌文档,像这样

{"gps":[0,100]}

{"gps":{"x":-30,"y":30}}

还可以用min和max设定选项的最大值和最小值

现在我们可以查询

db.map.find({"gps":{"$near":[40,-73]}})

这会按照点(40,-73)由近及远的方式将map集合的所有文档都返回

不仅如此,还可以指定形状,比如矩形

db.map.find({"gps":{"$within":{"$box":[ [10,20],[15,30] ]}}})

$box是两个元素的数组,第一个元素指左下方,第二个指右上角。 还可以用它来找到园内的点

db.map.find({"gps":{"$within":{"$center":[[10,30],5],}}})

原文地址:https://www.cnblogs.com/caohaifeng/p/5550735.html