MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mongo trouve des doublons pour les entrées de deux champs ou plus

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 .