MongoDB: 多个索引

MongoDB: multiple indexex

是否可以在MongoDB的一个集合中创建多个文本索引和多个数组索引?

我不是指多字段的单一索引。

添加我的评论作为答案以供将来参考。

据我所知,一个 collection 中不能包含多个文本 index。 MongoDB 允许您创建多个文本 index,但是,在搜索时会出错。参考:jira.mongodb.org/browse/SERVER-8127

Text Indexes : MongoDB 不允许用户创建多个单字段文本索引,这很有意义,因为在您的查询中您不会指定字段名称当使用 $text 搜索时($text search 用于文本索引),如果你真的需要它,你可以创建一个复合文本索引并使用权重作为选项 - 这样你就可以说你的查询最有可能与复合文本索引中的特定字段匹配。

参考:Text Indexes MongoDB , $text search Documentation

多键索引:

  1. 您可以创建和创建多键索引,就像创建一样 其他索引类型(我的意思是说你不需要传递任何选项 比如创建 unique/sparse 等)。

  2. 在创建索引时 - MongoDB会自动 如果在任何文档中找到一个数组,则将普通索引转换为多键索引 正在索引的特定字段或 创建索引后 然后在任何时候 - mongoDB 可以将索引转换为多键索引,如果 在特定字段上的任何文档中插入一个数组。

  3. 您可以检查多键索引 isMultiKey : true 在对集合执行 getIndexes() 后在索引上。

多键索引的限制

  1. 记住不要创建两个字段都是数组的复合索引,因为它会爆炸,因为它需要在这些字段的笛卡尔积上创建索引键两个字段。

  2. 此外,mongoDB 如果您尝试插入一个 以两个字段作为数组的文档,其中两个字段已经被复合索引。


参考:MultiKey Indexes MongoDB