MongoDB地理空间查询中$near和$within的区别

5

$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); 

有人能详细解释一下吗?
1个回答

15
主要区别如下:
  • $near 根据距离排序; $geoWithin 测试是否包含在带有GeoJSON坐标的多边形或复合多边形中,或者在2d坐标的一组形状中包含。
  • $near 返回从最近到最远的文档,任何其他顺序都需要内存排序;$geoWithin 可以与其他排序索引一起使用。
  • $near 需要地理空间索引; $geoWithin 在使用地理空间索引时性能更好,但不需要它。
  • $near 不支持分片集群 - 必须使用geonear命令或$geoNear聚合阶段。
此外,请查看$near$geoWithin文件。

从 MongoDB 4.0 开始,$near 查询支持分片集合。 - Andreas Bergström

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接