Puede agrupar registros duplicados mediante canalización de agregación:
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"}
])
Después de la ejecución de la canalización de agregación, theCollectionWithoutDuplicates
la colección contiene un documento para cada grupo de documentos originales duplicados, con un nuevo _id
- puede verificar la salida, eliminando la colección original (db.theCollection.drop()
) y cambie el nombre de la nueva colección (db.theCollectionWithoutDuplicates.renameCollection('theCollection')
). Soltar y renombrar se pueden combinar en db.theCollectionWithoutDuplicates.renameCollection('theCollection', true)
.
EXPLICACIÓN del uso de canalización de agregación:
db.theCollection.aggregate([])
ejecuta una canalización de agregación y recibe una lista de las etapas de agregación que se ejecutarán- el
$group
documento de grupos de etapa por campos especificados como subsiguiente_id
campo - el
$project
la etapa cambia los nombres de los campos, aplanando_id
anidados subdocumentos producidos por$group
- el
$out
el escenario almacena los documentos resultantes de la agregación en una colección dada