Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

geoSearch

在此页面上

  • 兼容性
  • 行为
  • 示例
geoSearch

重要

已在 MongoDB 5.0 中删除

MongoDB 5.0删除了已弃用的geoHaystack索引和geoSearch命令。 请改用带有 的2 d索引 $geoNear或受支持的 地理空间查询运算符 之一。

将 MongoDB 实例升级到 5.0 并将 FeatureCompatibilityVersion 设置为 5.0 会删除所有先前存在的 geoHaystack 索引。

geoSearch命令提供了使用 MongoDB 的干草堆索引功能的接口。 这些索引可用于在收集基于其他查询(即“干草堆”)的结果根据位置坐标返回结果。

geoSearch 命令接受包含以下字段的文档

字段
类型
说明

geoSearch

字符串

要查询的collection。

search

文档

用于筛选文档的查询。

near

阵列

点的坐标。

maxDistance

数字

可选。 与指定点的最大距离。

limit

数字

可选。 要返回的最大文档数。

readConcern

文档

可选。指定读关注

readConcern 选项的语法如下:readConcern: { level: <value> }

可能的读关注级别是:

  • "local"这是针对主节点和从节点的读操作的默认读关注级别。

  • "available"。可用于对主节点和从节点执行读取操作。对于主节点和非分片从节点,"available" 行为与 "local" 相同。查询会返回实例的最新数据。

  • "majority" 。适用于使用 WiredTiger 存储引擎的副本集。

  • "linearizable"。仅适用于 primary 的读取操作。

有关读关注级别的更多信息,请参阅读关注级别

有关读关注级别的更多信息,请参阅读关注级别。

comment

any

可选。用户提供的待附加到该命令的注释。设置后,该注释将与该命令的记录一起出现在以下位置:

注释可以是任何有效的 BSON 类型(字符串、整型、对象、数组等)。

此命令可用于以下环境中托管的部署:

重要

无服务器实例不支持此命令。 有关更多信息,请参阅不支持的命令。

除非另有说明,否则 geoSearch 命令将结果限制为 50 个文档。

geoSearch 不支持分片集群。

geoSearch 可以在分布式事务中使用。

重要

在大多数情况下,与单文档写入操作相比,分布式事务会产生更高的性能成本,并且分布式事务的可用性不应取代有效的模式设计。在许多情况下,非规范化数据模型(嵌入式文档和数组)仍然是数据和使用案例的最佳选择。换言之,对于许多场景,适当的数据建模将最大限度地减少对分布式事务的需求。

有关其他事务使用注意事项(如运行时间限制和 oplog 大小限制),另请参阅生产注意事项

考虑以下示例:

db.runCommand({
geoSearch : "places",
near: [ -73.9667, 40.78 ],
maxDistance : 6,
search : { type : "restaurant" },
limit : 30
})

上述命令返回collectionplacestyperestaurant且与坐标[ -73.9667, 40.78 ]最大距离为 6 个单位的所有文档,最多 30 个结果。

若要覆盖 "local" 的默认读取关注级别,请使用 readConcern 选项。

对副本集执行以下操作可以指定读关注 "majority",以读取确认已写入大多数节点的数据的最新副本。

注意

无论读关注级别如何,节点上的最新数据可能无法反映系统中数据的最新版本。

db.runCommand(
{
geoSearch: "places",
near: [ -73.9667, 40.78 ],
search : { type : "restaurant" },
readConcern: { level: "majority" }
}
)

为确保单个线程可以读取自己的写入内容,请对副本集的主节点使用 "majority" 读关注和 "majority" 写关注。

后退

地理空间

在此页面上