注册

MongoDB中唯一索引(Unique)的那些事

下面是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中唯一索引的讲解和示例。