【问题标题】:MongoDB: multiple indexexMongoDB:多个索引
【发布时间】:2019-12-21 02:36:23
【问题描述】:

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

我不是指具有多个字段的单个索引。

【问题讨论】:

  • 据我记得你不能在一个集合中拥有多个文本索引。 MongoDB 允许您创建多个,但是在搜索时会出错。参考:jira.mongodb.org/browse/SERVER-8127
  • @fiveelements 谢谢,你帮了很多忙

标签: database mongodb database-indexes


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    参考:Text Indexes MongoDB$text search Documentation

    多键索引:

    1. 您可以创建 & 将创建多键索引,就像创建一样 其他索引类型(我的意思是说你不需要传递任何选项 就像创建唯一/稀疏等时一样)。

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

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

    多键索引的限制

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

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


    参考:MultiKey Indexes MongoDB

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-16
      • 2022-12-01
      • 2016-10-19
      • 1970-01-01
      • 1970-01-01
      • 2020-10-11
      • 2016-01-18
      相关资源
      最近更新 更多