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

Mongo trova duplicati per le voci di due o più campi

Puoi identificare facilmente i duplicati eseguendo la seguente operazione di pipeline di aggregazione:

db.collection.aggregate([
    { 
        "$group": { 
            "_id": { "foreing": "$foreing", "value": "$value" }, 
            "uniqueIds": { "$addToSet": "$_id" },
            "count": { "$sum": 1 } 
        }
    }, 
    { "$match": { "count": { "$gt": 1 } } }
])

Il $group l'operatore nel primo passaggio viene utilizzato per raggruppare i documenti per foreign e value valori chiave e quindi creare un array di _id valori per ciascuno dei documenti raggruppati come uniqueIds campo utilizzando il $addToSet operatore. Questo ti dà una matrice di valori di espressione univoci per ogni gruppo. Ottieni il numero totale di documenti raggruppati da utilizzare nelle fasi successive della pipeline con il $sum operatore.

Nella seconda fase della pipeline, utilizza $match operatore per filtrare tutti i documenti con un conteggio di 1. I documenti filtrati rappresentano chiavi di indice univoche.

I documenti rimanenti saranno quelli della raccolta che hanno valori chiave duplicati per la coppia foreing &value .