Bạn có thể nhóm các bản ghi trùng lặp bằng cách sử dụng đường dẫn tổng hợp:
db.theCollection.aggregate([
{$group: {_id: {item: "$item", qty: "$qty", size: "$size", status: "$status"}}},
{$project: {_id: 0, item: "$_id.item", qty: "$_id.qty", size: "$_id.size", status: "$_id.status"}},
{$out: "theCollectionWithoutDuplicates"}
])
Sau khi thực thi đường ống tổng hợp, theCollectionWithoutDuplicates bộ sưu tập chứa một tài liệu cho mỗi nhóm tài liệu ban đầu được sao chép, với một _id mới - bạn có thể xác minh kết quả đầu ra, xóa bộ sưu tập gốc (db.theCollection.drop() ) và đổi tên bộ sưu tập mới (db.theCollectionWithoutDuplicates.renameCollection('theCollection') ). Thả và đổi tên có thể được kết hợp trong db.theCollectionWithoutDuplicates.renameCollection('theCollection', true) .
GIẢI THÍCH việc sử dụng đường ống tổng hợp:
-
db.theCollection.aggregate([])thực hiện một đường dẫn tổng hợp, nhận danh sách các giai đoạn tổng hợp sẽ được thực thi -
$grouptài liệu nhóm giai đoạn theo các trường được chỉ định dưới dạng_idtiếp theo lĩnh vực -
$projectsân khấu thay đổi tên trường, làm phẳng_idlồng nhau tài liệu con do$grouptạo ra -
$outgiai đoạn lưu trữ tổng hợp các tài liệu kết quả vào bộ sưu tập nhất định