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 -
$group
tài liệu nhóm giai đoạn theo các trường được chỉ định dưới dạng_id
tiếp theo lĩnh vực -
$project
sân khấu thay đổi tên trường, làm phẳng_id
lồng nhau tài liệu con do$group
tạo ra -
$out
giai đ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