首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongodb geoNear对near

mongodb geoNear对near
EN

Stack Overflow用户
提问于 2013-03-21 00:57:02
回答 4查看 9.1K关注 0票数 15

看起来mongodb为地理空间查询提供了两个类似的函数-- $near$geoNear。根据蒙戈医生的说法

geoNear命令提供了一个替代$near操作符的方法。除了$near的功能外,geoNear还返回其他诊断信息。

看起来,geoNear提供了一个near功能的超集。例如,near似乎只返回最近的100个文档,而geoNear允许您指定最大值。是否有理由使用near而不是geoNear?一个比另一个更有效率吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-03-21 02:48:18

两者之一的效率应该是相同的。

geoNear的主要限制是,作为命令,它可以返回一个设置为最大文档大小的结果,因为所有匹配的文档都返回在单个结果文档中。它还要求在每个结果文档中添加一个距离字段,这可能是一个问题,也可能不是一个问题,取决于您的使用。

$near是一个查询操作符,所以结果可以大于单个文档(它们仍然在单个响应中返回,而不是单个文档)。还可以通过查询的limit()设置文档的最大数量。

我倾向于建议用户坚持使用$near,除非他们需要geonear命令中的diagnostics (例如,距离或位置匹配)。

票数 20
EN

Stack Overflow用户

发布于 2015-08-25 07:15:02

以下是主要的不同之处:

  1. $geoNear也给出了距离点的距离,但是$near命令没有。
  2. $geoNear命令要求集合最多只有一个2d索引和/或一个2dsphere索引,而地理空间查询操作符(如$near和$geoWithin )允许集合具有多个地理空间索引。这是因为在$geoNear命令中没有指定要搜索的字段的选项,而在$near命令中,可以指定字段名。
票数 3
EN

Stack Overflow用户

发布于 2019-07-30 08:39:58

主要的区别是$near是一个查询操作符,但是$geoNear是一个聚合阶段。两个文件都是按离给定点最近到最远的顺序返回的。

它的意思是$near可以用于find()查询或$match 聚合阶段,但$geoNear不能。相反,$geoNear必须仅作为单独的聚合阶段使用。

每个特性提供的选项也不同。我请您查阅相应的文档部分中的详细内容:

$near文档

$geoNear文档

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15537611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档