MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Rimuovere i record duplicati da mongodb 4.0

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:

  1. db.theCollection.aggregate([]) esegue una pipeline di aggregazione, ricevendo un elenco di fasi di aggregazione da eseguire
  2. il $group i gruppi di fasi documentano in base ai campi specificati come _id successivo campo
  3. il $project lo stadio cambia i nomi dei campi, appiattendo _id annidato documenti secondari prodotti da $group
  4. il $out stage memorizza l'aggregazione dei documenti risultanti in una data raccolta