$near
和$within
之间有什么区别?
db.geodata.find({ "loc" : { "$within" : { "$center" : [ [ 12.91365 , 77.59395] , 4]}}}).limit(10);
db.geodata.find({ "loc" : { "$near" : [ 12.91365 , 77.59395] , "$maxDistance" : 4}}).limit(10);
任何人都可以详细解释一下吗?
答案 0 :(得分:10)
主要区别是
$near
根据距离点的距离进行排序; $geoWithin
测试具有GeoJSON坐标的多边形或多边形中的包含,或者用于二维坐标的一组形状中的一个包含$near
从最近到最远的文档返回文档,任何其他顺序都需要内存中排序; $geoWithin
可与其他排序索引一起使用$near
需要地理空间索引; $geoWithin
表现更好,但不需要它$near
- 您必须使用geonear
命令或$geoNear
聚合阶段另请查看$near和$geoWithin的文档。