Si può facilmente identificare i duplicati da esegue 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
operatore nel primo passo viene utilizzato per raggruppare i documenti dai valori chiave foreign
e value
e quindi creare una matrice di _id
valori per ciascuno dei documenti raggruppati come campo uniqueIds
utilizzando la $addToSet
operatore. Questo ti dà una serie di valori di espressione univoci per ogni gruppo. Ottieni il numero totale di documenti raggruppati da utilizzare nelle fasi successive della pipeline con l'operatore $sum
.
Nel secondo stadio della pipeline, utilizzare l'operatore $match
per filtrare tutti i documenti con un conteggio di 1. I documenti filtrati-out rappresentano chiavi di indice univoche.
I restanti documenti saranno quelli della raccolta che hanno valori chiave duplicati per la coppia foreing
& value
.