在 MongoDB 中一起创建地理空间和类型索引?

Create geospatial and type index together in MongoDB?

我想通过此命令使用来自不同索引类型(2dsphere 和文本)的两个索引:

db.mycoll.createIndex({"@geolocationable":"2dsphere",name:"text"})

但我收到以下错误:

"errmsg" : "bad index key pattern { @geolocationable: \"2dsphere\", name: \"text\" }: Can't use more than one index plugin for a single index."

我读了MongoDB Text and 2D compound index 但我不确定为什么我不能在一个集合中创建 2dsphere 和文本索引。

我并不是说我想在一个查询中同时使用这两个索引,而是我想创建这个索引以便在单独的查询中单独使用它们

编辑:修改以回答更新的问题。

如果要在查询中分别使用这两个字段,则可以创建 2 个不同的索引而不是复合索引。

地理空间索引:

db.mycoll.createIndex({"@geolocationable":"2dsphere"})

正文索引:

db.mycoll.createIndex({name:"text"})

此外,从 docs 请注意

A collection can have at most one text index.

创建复合索引时,文本索引无法与多索引或地理空间索引分组。这是一个复合索引限制。

来自docs

A compound text index cannot include any other special index types, such as multi-key or geospatial index fields.

但是,如果您不打算在 name 字段上执行不区分大小写的搜索,您可以使用普通索引而不是文本索引创建复合索引。

db.mycoll.createIndex({"@geolocationable":"2dsphere",name:1})