MongoDB 地理空间命令
地理空间命令只包括一个命令,即 geoSearch 。它用于执行利用 MongoDB的Haystack 索引功能的地理空间查询。
Haystack索引: 它通过将对象分组为桶来增加搜索的效率,这些桶由第二个标准分组。
MongoDB geoSearch命令
geoSearch命令加载了一个接口,可以用于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”:用于读取操作。
示例
让我们以集合地点为例:
db.runCommand( { geoSearch : "location", near: [ -73.96466, 40.78546 ], maxDistance : 8, search : { type : "book store" }, limit : 50 })
上述命令返回集合”location”中距离坐标[-73.96466, 40.78546]最多8个单位的类型为书店的所有文档,最多返回50个结果。
覆盖默认的读关注级别
我们可以使用读关注选项来覆盖默认的读关注级别。例如:
db.runCommand(
{
geoSearch: "places",
near: [ -73.9667, 40.78 ],
search : { type : "book store" },
readConcern: { level: "majority" }
}
)