Puoi raggruppare record duplicati utilizzando la pipeline di aggregazione:
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"}
])
Dopo l'esecuzione della pipeline di aggregazione, il file theCollectionWithoutDuplicates
collection contiene un documento per ogni gruppo di documenti originali duplicati, con un nuovo _id
- puoi verificare l'output, rimuovendo la raccolta originale (db.theCollection.drop()
) e rinomina la nuova raccolta (db.theCollectionWithoutDuplicates.renameCollection('theCollection')
). Elimina e rinomina possono essere combinati in db.theCollectionWithoutDuplicates.renameCollection('theCollection', true)
.
SPIEGAZIONE dell'utilizzo della pipeline di aggregazione:
db.theCollection.aggregate([])
esegue una pipeline di aggregazione, ricevendo un elenco di fasi di aggregazione da eseguire- il
$group
i gruppi di fasi documentano in base ai campi specificati come_id
successivo campo - il
$project
lo stadio cambia i nomi dei campi, appiattendo_id
annidato documenti secondari prodotti da$group
- il
$out
stage memorizza l'aggregazione dei documenti risultanti in una data raccolta