Vous pouvez facilement identifier les doublons en exécutant l'opération de pipeline d'agrégation suivante :
db.collection.aggregate([
{
"$group": {
"_id": { "foreing": "$foreing", "value": "$value" },
"uniqueIds": { "$addToSet": "$_id" },
"count": { "$sum": 1 }
}
},
{ "$match": { "count": { "$gt": 1 } } }
])
Le $group
opérateur dans la première étape est utilisé pour regrouper les documents par le foreign
et value
valeurs clés, puis créez un tableau de _id
valeurs pour chacun des documents groupés en tant que uniqueIds
champ en utilisant le $addToSet
opérateur. Cela vous donne un tableau de valeurs d'expression uniques pour chaque groupe. Obtenez le nombre total de documents groupés à utiliser dans les étapes ultérieures du pipeline avec le $sum
opérateur.
Dans la deuxième étape du pipeline, utilisez le $match
opérateur pour filtrer tous les documents avec un nombre de 1. Les documents filtrés représentent des clés d'index uniques.
Les documents restants seront ceux de la collection qui ont des valeurs de clé en double pour la paire foreing
&value
.