Vous pouvez regrouper les enregistrements en double à l'aide du pipeline d'agrégation :
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"}
])
Après l'exécution du pipeline d'agrégation, le theCollectionWithoutDuplicates collection contient un document pour chaque groupe de documents originaux dupliqués, avec un nouveau _id - vous pouvez vérifier la sortie en supprimant la collection d'origine (db.theCollection.drop() ) et renommez la nouvelle collection (db.theCollectionWithoutDuplicates.renameCollection('theCollection') ). Supprimer et renommer peuvent être combinés dans db.theCollectionWithoutDuplicates.renameCollection('theCollection', true) .
EXPLICATION de l'utilisation du pipeline d'agrégation :
db.theCollection.aggregate([])exécute un pipeline d'agrégation, recevant une liste des étapes d'agrégation à exécuter- le
$groupétape groupes document par champs spécifiés comme suit_idchamp - le
$projectl'étape change les noms de champs, aplatissant les_idimbriqués sous-documents produits par$group - le
$outl'étape stocke l'agrégation des documents résultants dans une collection donnée