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 .