Nếu bạn muốn lấy một danh sách giống hệt nhau (ngoại trừ _id
, rõ ràng là) tài liệu trong bộ sưu tập của bạn, đây là cách bạn có thể làm điều đó:
collection.aggregate({
$project: {
"_id": 1, // keep the _id field where it is anyway
"doc": "$$ROOT" // store the entire document in the "doc" field
}
}, {
$project: {
"doc._id": 0 // remove the _id from the stored document because we do not want to compare it
}
}, {
$group: {
"_id": "$doc", // group by the entire document's contents as in "compare the whole document"
"ids": { $push: "$_id" }, // create an array of all IDs that form this group
"count": { $sum: 1 } // count the number of documents in this group
}
}, {
$match: {
"count": { $gt: 1 } // only show what's duplicated
}
})
Như mọi khi với khung tổng hợp, bạn có thể cố gắng hiểu chính xác những gì đang diễn ra trong từng bước bằng cách nhận xét tất cả các bước và sau đó kích hoạt lại mọi thứ theo từng giai đoạn.