Você pode agrupar registros duplicados usando o pipeline de agregação:
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"}
])
Após a execução do pipeline de agregação, o
theCollectionWithoutDuplicates coleção contém um documento para cada grupo de documentos duplicados originais, com um novo _id - você pode verificar a saída, removendo a coleção original (db.theCollection.drop() ) e renomeie a nova coleção (db.theCollectionWithoutDuplicates.renameCollection('theCollection') ). Soltar e renomear podem ser combinados em db.theCollectionWithoutDuplicates.renameCollection('theCollection', true) . EXPLICAÇÃO do uso do pipeline de agregação:
db.theCollection.aggregate([])executa um pipeline de agregação, recebendo uma lista de estágios de agregação a serem executados- o
$groupdocumentos de grupos de estágio por campos especificados como_idsubsequente campo - o
$projecto estágio altera os nomes dos campos, nivelando_idaninhado subdocumentos produzidos por$group - o
$outstage armazena os documentos resultantes da agregação em uma determinada coleção