sql >> Base de Datos >  >> NoSQL >> MongoDB

Mongo encuentra duplicados para entradas de dos o más campos

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 .