Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

ป้องกันข้อมูลซ้ำหลายฟิลด์ด้วยดัชนี Unique ใน MongoDB


สร้างดัชนี Unique แบบ Compound

ใช้ ensureIndex() พร้อม unique: true บนฟิลด์ FirstName และ Subject ร่วมกัน:

> db.demo272.ensureIndex({"FirstName":1,"Subject":1},{unique:true});
{ "createdCollectionAutomatically": true, "numIndexesBefore": 1, "numIndexesAfter": 2, "ok": 1 }

ทดสอบการแทรกข้อมูล

> db.demo272.insertOne({"FirstName":"Chris","Subject":"MySQL"});
{ "acknowledged": true, "insertedId": ObjectId("5e48232a1627c0c63e7dbabf") }
> db.demo272.insertOne({"FirstName":"Chris","Subject":"MongoDB"});
{ "acknowledged": true, "insertedId": ObjectId("5e48232f1627c0c63e7dbac0") }
> db.demo272.insertOne({"FirstName":"David","Subject":"MySQL"});
{ "acknowledged": true, "insertedId": ObjectId("5e48233a1627c0c63e7dbac1") }
> db.demo272.insertOne({"FirstName":"Chris","Subject":"MySQL"});
2020-02-15T22:28:55.137+0530 E QUERY [js] WriteError: E11000 duplicate key error collection: test.demo272 index: FirstName_1_Subject_1 dup key: { : "Chris", : "MySQL" }

แสดงข้อมูลที่บันทึกสำเร็จ

> db.demo272.find();
{ "_id": ObjectId("5e48232a1627c0c63e7dbabf"), "FirstName": "Chris", "Subject": "MySQL" }
{ "_id": ObjectId("5e48232f1627c0c63e7dbac0"), "FirstName": "Chris", "Subject": "MongoDB" }
{ "_id": ObjectId("5e48233a1627c0c63e7dbac1"), "FirstName": "David", "Subject": "MySQL" }