MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mongo encontra duplicatas para entradas para dois ou mais campos


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 .