2dsphere 索引
最后更新于
最后更新于
在本页面
概述
2dsphere
索引支持计算类似地球的球体上的几何形状的查询。2dsphere
索引支持所有MongoDB地理空间查询:包含、相交和邻近度查询。 有关地理空间查询的更多信息,请参见。
2dsphere
索引支持存储为和的数据(另请参阅2dsphere索引字段限制)。对于遗留坐标对,索引将数据转换为GeoJSON。
版本3
MongoDB 3.2引入了一个版本3的2dsphere索引。版本3是在MongoDB 3.2和更高版本中创建的2dsphere索引的默认版本。
版本2
MongoDB 2.6引入了2dsphere索引的版本2。版本2是在MongoDB 2.6和3.0系列中创建的2dsphere索引的默认版本。
要覆盖默认版本并指定其他版本,请在创建索引时包含选项{“ 2dsphereIndexVersion”:<version>}
。
sparse
属性版本2和更高版本的2dsphere
索引始终为且忽略选项。如果文档缺少2dsphere
索引所在字段(或者该字段为null或空数组),则MongoDB不会将文档条目添加到索引中。对于插入,MongoDB会插入文档,但不添加到2dsphere
索引。对于包含2dsphere
索引键以及其他类型键的复合索引,该索引是否引用文档只取决于2dsphere
索引字段。
对于包含2dsphere
索引键和其他类型的键的复合索引,只有2dsphere
索引字段确定索引是否引用文档。
MongoDB的早期版本仅支持2dsphere (Version 1)
索引。 默认情况下,2dsphere (Version 1)
索引不是sparse索引,并且拒绝该字段为空的文档。
geoNear
和$geoNear
的限制[success] 注意
如果您不指定
key
,您将最多只能拥有一个2dsphere
索引或一个2dsphere
索引,MongoDB首先寻找2d
索引。 如果不存在2d
索引,则MongoDB会寻找2dsphere
索引。
2dsphere
索引字段限制2dsphere
索引2dsphere
索引2dsphere
索引键创建复合索引译者:杨帅 周正
版本2和更高版本的2dsphere
索引包含对其他GeoJSON对象的支持:,,和。有关所有受支持的GeoJSON对象的详细信息,请参见。
从MongoDB 4.0开始,您可以为管道指定一个key
选项以明确指示要使用的索引字段路径。这使得在具有多个2dsphere
索引或多个索引的文档中也能被使用:
如果您的集合具有多个2dsphere
索引或多个索引,则必须使用key
选项来指定使用哪个索引字段路径。
如果未指定key
,您将无法使用多个2dsphere
索引或多个索引。 因为没有指定key
时,在多个2d
索引或2dsphere
索引中选择索引将变得无法明确。
对集合做分片时,不能将2dsphere
索引用作。 但是,您可以通过使用一个不同的字段作为分片键来在分片集合上创建地理空间索引。
具有索引的字段必须包含或形式的数据。如果您尝试插入一个在2dsphere
索引字段中包含非几何数据的文档,或者在一个索引字段中包含非几何数据的集合上构建2dsphere
索引,该操作将失败。
要创建2dsphere
索引,请使用 方法并指定字符串"2dsphere"
作为索引类型:
其中的<location field>
是其值为或的字段。
与只能引用一个位置字段和另一个字段的复合索引不同的是,2dsphere
索引可以引用多个位置字段及非位置字段。
以下示例,基于一个places
集合,该集合的文档将位置数据以形式存储在loc
字段中:
以下操作在位置字段loc
上创建一个索引:
可以包含2dsphere
索引键和非地理空间索引键。例如,以下操作将创建一个复合索引,其中第一个键loc
是2dsphere
索引键,其余键category
和names
是非地理空间索引键,并分别指定降序(-1
)和升序(1
)。
与索引不同,复合2dsphere
索引不需要将位置字段作为第一个索引字段。 例如: