在本页面
一个2dsphere
指数支持在查询一个类似地球的球体上计算的几何形状。2dsphere
索引支持所有MongoDB地理空间查询:包含,相交和邻近度查询。有关地理空间查询的更多信息,请参见
地理空间查询。
所述2dsphere
索引支持数据存储为以GeoJSON对象 和 遗留坐标对(也参见2dsphere索引字段限制)。对于旧式坐标对,索引会将数据转换为GeoJSON
Point。
2dsphere 索引版本 |
描述 |
---|---|
版本3 | MongoDB 3.2引入了2dsphere 索引的第3版。版本3是2dsphere 在MongoDB 3.2和更高版本中创建的索引的默认版本。 |
版本2 | MongoDB 2.6引入了2dsphere 索引的版本2 。版本2是2dsphere 在MongoDB 2.6和3.0系列中创建的索引的默认版本。 |
要覆盖默认版本并指定其他版本,请在创建索引时包括该选项。{ "2dsphereIndexVersion": <version> }
sparse
属性¶版本2和更高版本的2dsphere
索引始终是稀疏的,并且忽略稀疏选项。如果文档缺少2dsphere
索引字段(或者该字段是null
或为空数组),则MongoDB不会将文档条目添加到索引中。对于插入,MongoDB插入文档但不添加到2dsphere
索引中。
对于包含2dsphere
索引键和其他类型的键的复合索引,只有2dsphere
索引字段才能确定索引是否引用文档。
MongoDB的早期版本仅支持
索引。索引默认情况下不稀疏,并且将拒绝带有位置字段的文档。2dsphere (Version 1)
2dsphere (Version 1)
null
版本2和更高版本的2dsphere
索引包括对其他GeoJSON对象的支持:MultiPoint,MultiLineString,
MultiPolygon和GeometryCollection。有关所有受支持的GeoJSON对象的详细信息,请参见GeoJSON对象。
geoNear
和$geoNear
限制¶从MongoDB 4.0开始,您可以key
在$geoNear
管道阶段指定一个选项
以指示要使用的索引字段路径。这允许将$geoNear
舞台用于具有多个2dsphere
索引和/或多个
2d索引的集合:
2dsphere
索引和/或多个
2d索引,则必须使用该key
选项来指定要使用的索引字段路径。key
,则不能有多个
2dsphere
索引和/或多个2d索引,因为如果没有使用key
,则在多个2d
索引或
2dsphere
索引中选择的索引是不明确的。注意
如果您未指定key
,并且最多只有一个
2dsphere
索引索引和/或只有一个2dsphere
索引索引,则MongoDB首先会寻找2d
要使用的索引。如果2d
索引不存在,则MongoDB查找2dsphere
要使用的索引。
2dsphere
索引¶要创建2dsphere
索引,请使用
db.collection.createIndex()
方法并指定字符串文字"2dsphere"
作为索引类型:
其中,是一个字段,其值可以是
GeoJSON对象或旧式坐标对。<location field>
与可以引用一个位置字段和另一个位置字段的复合2d索引不同,复合 2dsphere
索引可以引用多个位置字段和非位置字段。
对于以下示例,请考虑一个places
包含文档的集合,该文档将位置数据作为GeoJSON Point存储在名为的字段中loc
: