主页

索引

模块索引

搜索页面

唯一索引

限制:

如果集合已经包含超出索引的唯一约束的数据(即有重复数据),则MongoDB无法在指定的索引字段上创建唯一索引。
不能在hash索引上创建唯一索引
唯一约束适用于Collection中的一个Document。
    由于约束适用于单文档document,因此对于唯一的多键索引,
    只要该文档document的索引键值不与另一个文档document的索引键值重复,
    文档就可能具有导致重复索引键值的数组元素。 在这种情况下,重复索引记录仅插入索引一次。

唯一索引可以拒绝保存那些被索引键的值已经重复的文档。
默认情况下,MongoDB索引的 unique 属性是 false 。

在同一篇文档存储重复数据的情况下,重复的值只会被存入索引一次。
如果一篇文档不包含唯一索引的被索引键,那么索引默认会为该文档存储一个null值。
由于唯一性的限制,MongoDB将只允许有一篇可以不包含被索引键。
如果超过一篇文档不包含被索引键或没有值,那么会抛出键重复(duplicate key)错误导致索引创建失败。
可以组合使用唯一性和稀疏索引的特性来过滤那些包含null值的文档以避免这个错误。

分片Collection唯一索引只能如下:

1. 分片键上的索引
2. 分片键是前缀的复合索引
3. 默认的_id索引;
   但是,如果_id字段不是分片键或分片键的前缀,则_id索引仅对每个分片强制执行唯一性约束。
   如果_id字段不是分片键,也不是分片键的前缀,MongoDB希望应用程序在分片中强制执行_id值的唯一性。

说明

备注

mongo每次查询只会使用一次索引!!!只有$or或查询特殊,他会给每一个或分支使用索引然后再合并。 索引虽然也是持久化在磁盘中的,但为了确保索引的速度,实际上需要将索引加载到内存中使用

主页

索引

模块索引

搜索页面