Mongo Duplikate suchen Sie nach Einträgen, die für zwei oder mehr Feldern
Habe ich Dokumente wie dieses:
{
"_id" : ObjectId("557eaf444ba222d545c3dffc"),
"foreing" : ObjectId("538726124ba2222c0c0248ae"),
"value" : "test",
}
Möchte ich alle Dokumente finden, die dupliziert haben Werte für das paar foreing
& value
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie leicht identifizieren Sie die Duplikate, indem Sie die folgende aggregation pipeline-Betrieb:
Den
$group
Betreiber im ersten Schritt verwendet wird, um die Gruppierung der Dokumente durch dieforeign
undvalue
Schlüssel-Werte und erstellen Sie ein array von_id
Werte für jede der gruppierten Dokumente alsuniqueIds
Feld mit der$addToSet
Betreiber. Dies gibt Ihnen eine Reihe von einzigartigen Ausdruck, der die Werte für jede Gruppe. Die Gesamtzahl der gruppierten Dokumente zu verwenden, die in den späteren pipeline-Stufen mit der$Summe
Betreiber.In der zweiten pipeline-Stufe, verwenden Sie die
$match
Betreiber heraus zu filtern, alle Dokumente, die einen Wert von 1. Der filtered-out Dokumente sind einzigartig index-Schlüssel.Die übrigen Dokumente werden diese in der Sammlung, die doppelte Schlüsselwerte für das paar
foreing
&value
.Müssen wir nur noch Gruppe auf der Grundlage der 2-Tasten, und markieren Sie die Elemente mit count größer als 1 ist, zum finden der Duplikate.
Abfrage :- Wird wie
AUSGABE :- Wird wie
Referenz-Link :- So finden mongo Dokumente mit ein und demselben Feld