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

Tìm record trùng lặp trong MongoDB

Sử dụng Aggregation Framework với $group, $match, $project để tìm các giá trị trùng lặp.

Ví dụ minh họa

Tạo collection findDuplicateRecordsDemo:

> db.findDuplicateRecordsDemo.insertOne({"HoTenSinhVien": "John"});
> db.findDuplicateRecordsDemo.insertOne({"HoTenSinhVien": "John"});
> db.findDuplicateRecordsDemo.insertOne({"HoTenSinhVien": "Carol"});
> db.findDuplicateRecordsDemo.insertOne({"HoTenSinhVien": "Sam"});
> db.findDuplicateRecordsDemo.insertOne({"HoTenSinhVien": "Carol"});
> db.findDuplicateRecordsDemo.insertOne({"HoTenSinhVien": "Mike"});

Truy vấn aggregation

> db.findDuplicateRecordsDemo.aggregate([
  {$group: {_id: "$HoTenSinhVien", dem: {$sum: 1}}},
  {$match: {_id: {$ne: null}, dem: {$gt: 1}}},
  {$project: {HoTenSinhVien: "$_id", _id: 0}}
]);

Kết quả:

{ "HoTenSinhVien": "Carol" }
{ "HoTenSinhVien": "John" }

Giải thích:

  1. $group: Nhóm theo HoTenSinhVien, đếm số lần xuất hiện
  2. $match: Lọc nhóm có count > 1 (và _id không null)
  3. $project: Định dạng lại output

Mở rộng: Thêm $addToSet: "$_id" vào $group để lấy danh sách _id của các document trùng.