看起来mongodb为地理空间查询提供了两个类似的函数-- $near和$geoNear。根据蒙戈医生的说法
geoNear命令提供了一个替代$near操作符的方法。除了$near的功能外,geoNear还返回其他诊断信息。
看起来,geoNear提供了一个near功能的超集。例如,near似乎只返回最近的100个文档,而geoNear允许您指定最大值。是否有理由使用near而不是geoNear?一个比另一个更有效率吗?
发布于 2013-03-21 02:48:18
两者之一的效率应该是相同的。
geoNear的主要限制是,作为命令,它可以返回一个设置为最大文档大小的结果,因为所有匹配的文档都返回在单个结果文档中。它还要求在每个结果文档中添加一个距离字段,这可能是一个问题,也可能不是一个问题,取决于您的使用。
$near是一个查询操作符,所以结果可以大于单个文档(它们仍然在单个响应中返回,而不是单个文档)。还可以通过查询的limit()设置文档的最大数量。
我倾向于建议用户坚持使用$near,除非他们需要geonear命令中的diagnostics (例如,距离或位置匹配)。
发布于 2015-08-25 07:15:02
以下是主要的不同之处:
发布于 2019-07-30 08:39:58
主要的区别是$near是一个查询操作符,但是$geoNear是一个聚合阶段。两个文件都是按离给定点最近到最远的顺序返回的。
它的意思是$near可以用于find()查询或$match 聚合阶段,但$geoNear不能。相反,$geoNear必须仅作为单独的聚合阶段使用。
每个特性提供的选项也不同。我请您查阅相应的文档部分中的详细内容:
https://stackoverflow.com/questions/15537611
复制相似问题