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_id
champ - le
$project
l'étape change les noms de champs, aplatissant les_id
imbriqués sous-documents produits par$group
- le
$out
l'étape stocke l'agrégation des documents résultants dans une collection donnée