Можете лесно да идентифицирате дубликатите, като изпълните следната операция на конвейера за агрегиране:
db.collection.aggregate([
{
"$group": {
"_id": { "foreing": "$foreing", "value": "$value" },
"uniqueIds": { "$addToSet": "$_id" },
"count": { "$sum": 1 }
}
},
{ "$match": { "count": { "$gt": 1 } } }
])
$group
Операторът в първата стъпка се използва за групиране на документите по foreign
и value
ключови стойности и след това създайте масив от _id
стойности за всеки от групираните документи като uniqueIds
поле с помощта на $addToSet
оператор. Това ви дава масив от уникални стойности на изрази за всяка група. Вземете общия брой групирани документи, които да използвате в по-късните етапи на конвейера с $sum
оператор.
Във втория етап на конвейера използвайте $match
оператор за филтриране на всички документи с брой 1. Филтрираните документи представляват уникални индексни ключове.
Останалите документи ще бъдат тези в колекцията, които имат дублиращи се ключови стойности за двойка foreing
&value
.