ใช้ createIndex() (แทน ensureIndex() ที่ deprecated) พร้อมตัวเลือก unique: true เพื่อป้องกันการเพิ่มข้อมูลซ้ำในฟิลด์ที่กำหนด สร้างดัชนี unique บนฟิลด์ SubjectName:
> db.demo316.createIndex({"SubjectName":1}, {unique:true});
{ "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
ลองเพิ่มข้อมูล:
> db.demo316.insertOne({"SubjectName":"MySQL"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e50e378f8647eb59e56205d") }
> db.demo316.insertOne({"SubjectName":"MongoDB"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e50e37df8647eb59e56205e") }
> db.demo316.insertOne({"SubjectName":"MongoDB"});
ครั้งที่ 3 จะเกิดข้อผิดพลาด duplicate key:
WriteError: E11000 duplicate key error collection: test.demo316 index: SubjectName_1 dup key: { : "MongoDB" }
แสดงข้อมูลที่บันทึกสำเร็จ:
> db.demo316.find();
ผลลัพธ์:
{ "_id" : ObjectId("5e50e378f8647eb59e56205d"), "SubjectName" : "MySQL" }
{ "_id" : ObjectId("5e50e37df8647eb59e56205e"), "SubjectName" : "MongoDB" }
ข้อมูลเพิ่มเติม
createIndex()แทนensureIndex()(deprecated ตั้งแต่ MongoDB 3.0)- Unique index ทำงานทั้ง insert และ update
- สามารถสร้าง compound unique index ได้ เช่น
{ "field1": 1, "field2": 1 } - ใช้
db.collection.dropIndex("SubjectName_1")เพื่อลบดัชนี