MongoDB GEO地理空间命令

一、MongoDB GEO地理空间命令 介绍

地理空间命令仅包含一个命令,即geoSearch。它用于执行利用MongoDB 的 haystack索引功能的地理空间查询。

Haystack 索引:它通过创建按第二个标准分组的对象桶来增加搜索。

geoSerach 命令加载了一个可供 MongoDB 的 haystack 索引功能使用的接口。它用于根据一些不同的查询(例如 haystack)收集结果后返回基于位置的结果。

语法:

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

它接受包含以下字段的文档:

字段名 类型 描述
geoSearch string 它是您要对其执行地理搜索的集合的名称。
search document 它是用于过滤文档的查询。
near array 它是我们要执行地理搜索的点的坐标。
maxDistance number 我们可以定义到我们想要执行搜索的最大距离。
Limit number 我们可以限制它将返回的最大文档数。
readConcern document 我们可以使用以下语法指定读取关注点;
readConcern: { level: <value> }

可能的阅读关注级别是:
  • "local": 它是读取操作的默认读取关注级别。
  • "available": 返回最新的数据。
  • "majority": 使用wiredTiger存储引擎的副本集使用。
  • "linearizable":用于读取操作。

二、MongoDB GEO地理空间命令 示例

我们以采集位置为例:

db.runCommand( { geoSearch : "location", near: [ -73.96466, 40.78546 ], maxDistance : 8, search : { type : "book store" }, limit : 50 }) 

上述命令返回所有类型为 book store 的文档,该文档与集合位置中的坐标 [ -73.96466, 40.78546 ] 的最大距离为 8 个单位,最多可返回 50 个结果。

覆盖默认读取问题

我们可以使用读取关注选项来覆盖默认的读取关注级别。例如:

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

热门文章

优秀文章