在 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})
我想通过此命令使用来自不同索引类型(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})