Você pode identificar facilmente as duplicatas executando a seguinte operação de pipeline de agregação:
db.collection.aggregate([
{
"$group": {
"_id": { "foreing": "$foreing", "value": "$value" },
"uniqueIds": { "$addToSet": "$_id" },
"count": { "$sum": 1 }
}
},
{ "$match": { "count": { "$gt": 1 } } }
])
O
$group
operador na primeira etapa é usado para agrupar os documentos pelo foreign
e value
valores de chave e, em seguida, crie uma matriz de _id
valores para cada um dos documentos agrupados como uniqueIds
campo usando o $addToSet
operador. Isso fornece uma matriz de valores de expressão exclusivos para cada grupo. Obtenha o número total de documentos agrupados para usar nos estágios posteriores do pipeline com o $sum
operador. No segundo estágio do pipeline, use o
$match
operador para filtrar todos os documentos com uma contagem de 1. Os documentos filtrados representam chaves de índice exclusivas. Os documentos restantes serão aqueles na coleção que possuem valores de chave duplicados para o par
foreing
&value
.