Sie können die Duplikate leicht identifizieren, indem Sie die folgende Aggregations-Pipeline-Operation ausführen:
db.collection.aggregate([
{
"$group": {
"_id": { "foreing": "$foreing", "value": "$value" },
"uniqueIds": { "$addToSet": "$_id" },
"count": { "$sum": 1 }
}
},
{ "$match": { "count": { "$gt": 1 } } }
])
Die $group
Operator im ersten Schritt wird verwendet, um die Dokumente nach dem foreign
zu gruppieren und value
Schlüsselwerte und erstellen Sie dann ein Array von _id
Werte für jedes der gruppierten Dokumente als uniqueIds
Feld mit $addToSet
Operator. Dadurch erhalten Sie ein Array mit eindeutigen Ausdruckswerten für jede Gruppe. Rufen Sie mit $sum
die Gesamtzahl der gruppierten Dokumente ab, die in den späteren Pipeline-Phasen verwendet werden sollen Betreiber.
Verwenden Sie in der zweiten Pipelinephase den $match
Operator, um alle Dokumente mit einer Anzahl von 1 herauszufiltern. Die herausgefilterten Dokumente stellen eindeutige Indexschlüssel dar.
Die verbleibenden Dokumente sind diejenigen in der Sammlung, die doppelte Schlüsselwerte für das Paar foreing
haben &value
.