Du kan enkelt identifiera dubbletterna genom att köra följande aggregationspipelineoperation:
db.collection.aggregate([
{
"$group": {
"_id": { "foreing": "$foreing", "value": "$value" },
"uniqueIds": { "$addToSet": "$_id" },
"count": { "$sum": 1 }
}
},
{ "$match": { "count": { "$gt": 1 } } }
])
$group
operatorn i det första steget används för att gruppera dokumenten efter foreign
och value
nyckelvärden och skapa sedan en array med _id
värden för vart och ett av de grupperade dokumenten som uniqueIds
fältet med $addToSet
operatör. Detta ger dig en rad unika uttrycksvärden för varje grupp. Få det totala antalet grupperade dokument att använda i de senare stegen i pipeline med $sum
operatör.
I det andra pipelinesteget använder du $match
operatör för att filtrera bort alla dokument med ett antal 1. De bortfiltrerade dokumenten representerar unika indexnycklar.
De återstående dokumenten kommer att vara de i samlingen som har dubbla nyckelvärden för par foreing
&value
.