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
.