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
$groupi gruppi di fasi documentano in base ai campi specificati come_idsuccessivo campo - il
$projectlo stadio cambia i nomi dei campi, appiattendo_idannidato documenti secondari prodotti da$group - il
$outstage memorizza l'aggregazione dei documenti risultanti in una data raccolta