Puede identificar fácilmente los duplicados ejecutando la siguiente operación de canalización de agregación:
db.collection.aggregate([
{
"$group": {
"_id": { "foreing": "$foreing", "value": "$value" },
"uniqueIds": { "$addToSet": "$_id" },
"count": { "$sum": 1 }
}
},
{ "$match": { "count": { "$gt": 1 } } }
])
El $group
El operador en el primer paso se usa para agrupar los documentos por el foreign
y value
valores clave y luego crea una matriz de _id
valores para cada uno de los documentos agrupados como uniqueIds
campo usando el $addToSet
operador. Esto le brinda una matriz de valores de expresión únicos para cada grupo. Obtenga la cantidad total de documentos agrupados para usar en las etapas posteriores de canalización con $sum
operador.
En la segunda etapa de canalización, use el $match
operador para filtrar todos los documentos con un recuento de 1. Los documentos filtrados representan claves de índice únicas.
Los documentos restantes serán aquellos de la colección que tengan valores clave duplicados para el par foreing
&value
.