Como encontrar duplicatas no mongodb


Você pode usar a seguinte sintaxe para localizar documentos com valores duplicados no MongoDB:

 db.collection.aggregate([
    {" $group ": { "_id": " $field1 ", "count": { " $sum ": 1 } } },
    {" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } }, 
    {" $project ": {"name": " $_id ", "_id": 0} }
])

Aqui está o que esta sintaxe faz:

  • Agrupe todos os documentos com o mesmo valor no campo 1
  • Corresponder grupos que possuem mais de um documento
  • Projetar todos os grupos que possuem mais de um documento

Esta consulta específica procura valores duplicados na coluna field1 . Basta editar este valor para alterar o campo de pesquisa.

O exemplo a seguir mostra como usar essa sintaxe com uma equipe de coleta com os seguintes documentos:

 db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 })
db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 22 })
db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 })
db.teams.insertOne({team: " Rockets ", position: " Forward ", points: 26 })
db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })

Exemplo: Localizar documentos com valores duplicados

Podemos usar o seguinte código para encontrar todos os valores duplicados na coluna “equipe”:

 db.teams.aggregate([
    {" $group ": { "_id": " $team ", "count": { " $sum ": 1 } } },
    {" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } }, 
    {" $project ": {"name": " $_id ", "_id": 0} }
])

Esta consulta retorna os seguintes resultados:

 { name: 'Rockets' }
{ name: 'Mavs' }

Isso nos diz que os valores “Rockets” e “Mavs” aparecem múltiplas vezes no campo “team”.

Observe que podemos simplesmente substituir $team por $position para procurar valores duplicados no campo “position”:

 db.teams.aggregate([
    {" $group ": { "_id": " $position ", "count": { " $sum ": 1 } } },
    {" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } }, 
    {" $project ": {"name": " $_id ", "_id": 0} }
])

Esta consulta retorna os seguintes resultados:

 { name: 'Guard' }

Isto nos diz que “Guarda” aparece várias vezes no campo “posição”.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns no MongoDB:

MongoDB: Como adicionar um novo campo a uma coleção
MongoDB: Como agrupar e contar
MongoDB: Como agrupar por vários campos

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *