下面是MongoDB中唯一索引的详细讲解和示例说明:
什么是MongoDB中的唯一索引(Unique Index)
在MongoDB中,唯一索引是指制定了某些字段为唯一索引,这些字段的值必须是唯一的。MongoDB中唯一索引可以保证数据的唯一性和完整性,类似于关系型数据库中的唯一约束。
MongoDB中唯一索引的创建方式和其他索引相同,可以在MongoDB的shell中使用ensureIndex()或createIndex()方法进行创建。在创建索引时,可以使用{unique:true}属性指定该索引为唯一索引。
db.collection.ensureIndex({field:1},{unique:true})
db.collection.createIndex({field:1},{unique:true})
MongoDB中唯一索引的示例
下面给出两个示例,分别是创建和使用MongoDB中唯一索引的演示。
示例一:创建唯一索引
步骤1:在MongoDB中创建一个collection,并插入多条数据。
use testdb
db.person.insert([
{
"_id": 1,
"name": "Tom",
"age": 20,
"phone": "123456789"
},
{
"_id": 2,
"name": "Lisa",
"age": 25,
"phone": "123456789"
},
{
"_id": 3,
"name": "Jack",
"age": 30,
"phone": "987654321"
}
])
步骤2:在phone字段上创建唯一索引
db.person.ensureIndex({"phone":1},{unique:true})
或
db.person.createIndex({"phone":1},{unique:true})
通过以上命令,我们创建了phone字段的唯一索引。MongoDB会遍历所有数据,以确保创建唯一索引后,该字段中不会出现重复值。
示例二:使用唯一索引
步骤1:插入一条重复的数据
在MongoDB中,由于唯一索引的存在,插入重复数据将会失败。下面我们尝试插入一条重复数据。
db.person.insert({
"name": "John",
"age": 35,
"phone": "123456789"
})
插入重复数据后,MongoDB会提示错误信息。
WriteError: E11000 duplicate key error collection: testdb.person index: phone_1 dup key: { phone: "123456789" } :
步骤2:插入一个不重复的数据
db.person.insert({
"name": "John",
"age": 35,
"phone": "987654321"
})
因为phone字段是唯一索引,尝试插入重复数据时失败,插入不重复数据时成功。
以上是MongoDB中唯一索引的讲解和示例。