Docs 菜单

Docs 主页开发应用程序MongoDB Manual

geoSearch

在此页面上

  • 行为
  • 举例
geoSearch

重要

已在 MongoDB 5.0 中删除

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

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

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

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

字段
类型
说明
geoSearch
字符串
要查询的collection。
search
文档
用于筛选文档的查询。
near
阵列
点的坐标。
maxDistance
数字
可选。 与指定点的最大距离。
limit
数字
可选。 要返回的最大文档数。
readConcern
文档

可选。指定读关注

从 MongoDB 3.6 开始,readConcern 选项具有以下事务语法: readConcern: { level: <value> }

可能的读关注级别是:

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

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

comment
注意到

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

注释可以是任何有效的 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" 写关注。

← 地理空间命令

在此页面上