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

Kiểm tra trùng lặp trong mảng MongoDB

Sử dụng $unwind, $group, $match để phát hiện phần tử trùng

Quy trình: bẻ mảng, nhóm theo giá trị và đếm, lọc nhóm có count > 1.

Dữ liệu mẫu

> db.demo756.insertMany([
  { SubjectName: ["MySQL", "MongoDB", "Java"] },
  { SubjectName: ["MongoDB", "MySQL", "MongoDB", "C", "C+", "MySQL"] }
]);

Truy vấn tìm phần tử trùng lặp

db.demo756.aggregate([
  { $project: { SubjectName: 1 } },
  { $unwind: "$SubjectName" },
  { $group: { _id: { _id: "$_id", Name: "$SubjectName" }, count: { $sum: 1 } } },
  { $match: { count: { $gt: 1 } } },
  { $group: { _id: "$_id._id", SubjectName: { $addToSet: "$_id.Name" } } }
]);

Kết quả

{ "_id": ObjectId("5eb01e2b5637cd592b2a4ade"), "SubjectName": ["MongoDB", "MySQL"] }

Chỉ bản ghi thứ 2 có phần tử trùng lặp ("MongoDB" xuất hiện 2 lần, "MySQL" 2 lần). Bản ghi thứ 1 không có trùng lặp nên không xuất hiện trong kết quả.