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

Cách xóa bản ghi trùng lặp khỏi Collection MongoDB

Tạo chỉ mục duy nhất (Unique Index) để ngăn chặn trùng lặp

Để loại bỏ các bản ghi trùng lặp trong MongoDB, bạn có thể thiết lập ràng buộc unique: true khi tạo chỉ mục. Tùy chọn dropDups: true (đã không còn được hỗ trợ từ MongoDB 3.0+) sẽ tự động xóa các bản ghi trùng lặp hiện có khi tạo chỉ mục.

Cú pháp

db.tenCollection.createIndex({ tenTruong: 1 }, { unique: true })

Lưu ý: Từ MongoDB 3.0, tùy chọn dropDups đã bị loại bỏ. Thay vào đó, bạn nên xóa thủ công các bản ghi trùng lặp trước khi tạo chỉ mục duy nhất.

Ví dụ minh họa

> db.demo604.createIndex({ FirstName: 1 }, { unique: true });
{
  "createdCollectionAutomatically": true,
  "numIndexesBefore": 1,
  "numIndexesAfter": 2,
  "ok": 1
}
> db.demo604.insertOne({ FirstName: "Chris" });
{ "acknowledged": true, "insertedId": ObjectId("5e960887ed011c280a0905d8") }
> db.demo604.insertOne({ FirstName: "Bob" });
{ "acknowledged": true, "insertedId": ObjectId("5e96088aed011c280a0905d9") }
> db.demo604.insertOne({ FirstName: "David" });
{ "acknowledged": true, "insertedId": ObjectId("5e96088ded011c280a0905da") }
> db.demo604.insertOne({ FirstName: "Chris" });
// Lỗi: E11000 duplicate key error collection: test.demo604 index: FirstName_1 dup key: { : "Chris" }

Kiểm tra dữ liệu

> db.demo604.find();

Kết quả:

{ "_id": ObjectId("5e960887ed011c280a0905d8"), "FirstName": "Chris" }
{ "_id": ObjectId("5e96088aed011c280a0905d9"), "FirstName": "Bob" }
{ "_id": ObjectId("5e96088ded011c280a0905da"), "FirstName": "David" }

Chỉ mục duy nhất đảm bảo không có hai bản ghi nào có cùng giá trị FirstName.