Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Ngăn chặn trùng lặp nhiều trường với index unique trong MongoDB

Để ngăn chặn trùng lặp trên nhiều trường, sử dụng ensureIndex() (hoặc createIndex() trong phiên bản mới) với tùy chọn unique: true.

Tạo collection và index unique trên cặp trường FirstName + Subject:

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

Thêm các document:

> db.demo272.insertOne({"FirstName":"Chris","Subject":"MySQL"});
> db.demo272.insertOne({"FirstName":"Chris","Subject":"MongoDB"});
> db.demo272.insertOne({"FirstName":"David","Subject":"MySQL"});
> db.demo272.insertOne({"FirstName":"Chris","Subject":"MySQL"});

Lần insert thứ 4 sẽ báo lỗi trùng khóa (E11000) vì cặp (Chris, MySQL) đã tồn tại:

WriteError: E11000 duplicate key error collection: test.demo272 index: FirstName_1_Subject_1 dup key: { : "Chris", : "MySQL" }

Kiểm tra dữ liệu hiện có:

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