Du kan nemt identificere dubletterne ved at køre følgende aggregeringspipelineoperation:
db.collection.aggregate([
{
"$group": {
"_id": { "foreing": "$foreing", "value": "$value" },
"uniqueIds": { "$addToSet": "$_id" },
"count": { "$sum": 1 }
}
},
{ "$match": { "count": { "$gt": 1 } } }
])
$group
operatør i det første trin bruges til at gruppere dokumenterne efter foreign
og value
nøgleværdier, og opret derefter en matrix af _id
værdier for hvert af de grupperede dokumenter som uniqueIds
feltet ved hjælp af $addToSet
operatør. Dette giver dig en række unikke udtryksværdier for hver gruppe. Få det samlede antal grupperede dokumenter til brug i de senere pipeline-faser med $sum
operatør.
Brug $match
i den anden pipeline-fase operatør for at bortfiltrere alle dokumenter med et antal på 1. De bortfiltrerede dokumenter repræsenterer unikke indeksnøgler.
De resterende dokumenter vil være dem i samlingen, der har dublerede nøgleværdier for par foreing
&value
.