U kunt de duplicaten gemakkelijk identificeren door de volgende aggregatiepijplijnbewerking uit te voeren:
db.collection.aggregate([
{
"$group": {
"_id": { "foreing": "$foreing", "value": "$value" },
"uniqueIds": { "$addToSet": "$_id" },
"count": { "$sum": 1 }
}
},
{ "$match": { "count": { "$gt": 1 } } }
])
De $group
operator in de eerste stap wordt gebruikt om de documenten te groeperen op de foreign
en value
sleutelwaarden en maak vervolgens een array van _id
waarden voor elk van de gegroepeerde documenten als de uniqueIds
veld met behulp van de $addToSet
exploitant. Dit geeft u een reeks unieke expressiewaarden voor elke groep. Verkrijg het totale aantal gegroepeerde documenten om in de latere pijplijnfasen te gebruiken met de $sum
telefoniste.
Gebruik in de tweede pijplijnfase de $match
operator om alle documenten uit te filteren met een telling van 1. De uitgefilterde documenten vertegenwoordigen unieke indexsleutels.
De overige documenten zijn die in de collectie die dubbele sleutelwaarden hebben voor paar foreing
&value
.