翻译或纠错本页面
唯一索引¶
唯一索引可以让MongoDB拒绝保存那些被索引键的值已经重复的文档。
如果希望创建一个唯一索引,请使用 db.collection.ensureIndex() 方法并将 unique 选项设置为 true 。例如,在 members 集合的 user_id 键上建立一个唯一索引,可以在 mongo shell中执行如下操作:
db.members.ensureIndex( { "user_id": 1 }, { unique: true } )
默认情况下,MongoDB索引的 unique 属性是 false 。
如果您对 复合索引 施加唯一性的限制,那么MongoDB就会强制要求 复合值 的唯一性,而不是分别对每个单独的值要求唯一。
特性¶
跨文档的唯一性限制¶
唯一性的限制是针对一个集合中不同文档的。也即,唯一索引可以防止 不同 文档的被索引键上存储相同值,但是它不禁止同一篇文档在被索引键存储的数组里存储的元素或者内嵌文档是相同的值。在同一篇文档存储重复数据的情况下,重复的值只会被存入索引一次。
例如,一个集合有一个唯一索引 a.b :
db.collection.ensureIndex( { "a.b": 1 }, { unique: true } )
假如在集合中没有其他的文档的 a.b 键的值是 5 ,那么唯一索引将会允许将以下文档插入集合:
db.collection.insert( { a: [ { b: 5 }, { b: 5 } ] } )