Mongodb索引使用限制

学习mongodb,体会mongodb的每一个使用细节,欢迎阅读威赞的文章。这是威赞发布的第85篇mongodb技术文章,欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题,欢迎在文章下面点个赞,或者关注威赞。谢谢。

通过在Mongodb添加索引,能够提高Mongodb查询效率。但在索引在使用当中也会有一些限制。本文结合官方文档,介绍Mongodb索引使用上的一些限制。

每个集合的索引数量

单个集合当中,最多可以添加64个索引

复合索引字段数量

复合索引当中,最多包含32个字段

特殊索引查询

用户不可以将文本查询$text中创建的索引与另外一种特殊类型的索引共同使用。如用户不能够共同使用$text查询和$near操作符。

二维空间索引仅能包含地理信息数据

带有二维空间索引的字段必须保存GeoJSON数据类型或者坐标值。如果用户向二维空间索引字段插入其他类型的数据,或向包含其他数据类型的字段建立二维空间索引时,mongodb会报错。

二维空间索引键数量限制

为了生成二维空间索引,mongodb将GeoJSON类型的数据匹配到mongodb内部的一种数据展现方式。这种数据匹配过程可能会生成一个特别大的数组。

而当mongodb为数组字段创建索引时,mongdb会为每一个数据元素创建一个索引键。对于复合索引,mongod计算为每个字段生成的键集的笛卡尔乘积。构建笛卡尔乘积的两个数据集特别大时,数据计算的过程中可能会超过mongodb的内存限制。为了保证mongodb不会出现内存限制问题,mongodb使用参数indexMaxNumGeneratedKeysPerDocument 限制单个文档生成索引时最大键的数量。默认值是100000.当构建索引时,超过这个限制数量,mongodb会报错。

NaN值的处理

在索引覆盖查询中,使用WiredTiger引擎时,NaN的数字类型是double

多键索引

多键索引不能覆盖不在相同数组的字段。

地理信息索引

地理信息索引不支持索引覆盖查询

索引构建时的内存使用

createIndexes方法支持在一个集合中建立一个或多个索引。这个方法在构建索引时结合使用内存和临时文件。默认分配200Mb内存给createIndexes方法。当createIndexes方法创建多个索引时,构建多个索引过程中共用这200Mb的空间。当默认分配的创建索引内存空间被占满是,mongodb使用临时文件来继续构建索引。这些临时文件保存在--dbpath参数配置的路径下的_tmp文件夹当中。用户可以通过指定参数 maxIndexBuildMemoryUsageMegabytes 来修改这个默认的索引构建内存。分配更大的内存,会提高索引的构建效率。但过高的内存分配,可能会导致操作系统的内存使用过多,甚至服务重启。

用户通过createIndexes方法或者使用数据库管理中的数据初始同步命令时,都会触发索引构建。这些索引构建需要的内存大小,都是由参数maxIndexBuildMemoryUsageMegabytes指定的。单个集合的数据初始同步,没有什么内存使用风险。但用户很有可能同时触发多个数据库的数据初始同步,这样的同步操作内存使用很有可能超过限制。

字符序和索引类型

文本索引和二维索引斤支持简单的二进制比较,不支持字符序。

隐藏索引

用户不可以隐藏默认的_id字段索引

用户不可以在hint()方法中使用隐藏索引

相关推荐

  1. Mongodb索引使用限制

    2024-07-11 18:26:02       26 阅读
  2. MongoDB 索引限制

    2024-07-11 18:26:02       28 阅读
  3. Mongodb使用索引进行查询优化

    2024-07-11 18:26:02       23 阅读
  4. MongoDB 索引

    2024-07-11 18:26:02       31 阅读
  5. MongoDB-索引-部分索引

    2024-07-11 18:26:02       40 阅读
  6. MongoDB】--MongoDB的组合索引

    2024-07-11 18:26:02       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 18:26:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 18:26:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 18:26:02       58 阅读
  4. Python语言-面向对象

    2024-07-11 18:26:02       69 阅读

热门阅读

  1. 数据建设实践之大数据平台(七)

    2024-07-11 18:26:02       25 阅读
  2. git revert怎么使用?

    2024-07-11 18:26:02       24 阅读
  3. Webpack配置及工作流程

    2024-07-11 18:26:02       22 阅读
  4. 如何理解李彦宏说的“不要卷模型,要卷应用”

    2024-07-11 18:26:02       22 阅读
  5. 谷歌广告投放策略 -- 业务&成本

    2024-07-11 18:26:02       19 阅读
  6. 表单代码示例

    2024-07-11 18:26:02       23 阅读
  7. Unity中短路法在背包系统的应用

    2024-07-11 18:26:02       18 阅读
  8. 3133. 数组最后一个元素的最小值

    2024-07-11 18:26:02       23 阅读
  9. windows脚本获取 svn版本号

    2024-07-11 18:26:02       20 阅读
  10. 力扣题解(摆动序列)

    2024-07-11 18:26:02       21 阅读