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
$group
documentos de grupos de estágio por campos especificados como_id
subsequente campo - o
$project
o estágio altera os nomes dos campos, nivelando_id
aninhado subdocumentos produzidos por$group
- o
$out
stage armazena os documentos resultantes da agregação em uma determinada coleção