Come trovare duplicati in mongodb


Puoi utilizzare la seguente sintassi per trovare documenti con valori duplicati in MongoDB:

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

Ecco cosa fa questa sintassi:

  • Raggruppa tutti i documenti con lo stesso valore nel campo 1
  • Abbina i gruppi che hanno più di un documento
  • Proietta tutti i gruppi che hanno più di un documento

Questa particolare query cerca valori duplicati nella colonna field1 . Modifica semplicemente questo valore per cambiare il campo in cui effettuare la ricerca.

L’esempio seguente mostra come utilizzare questa sintassi con un team di raccolta con i seguenti documenti:

 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 })

Esempio: trovare documenti con valori duplicati

Possiamo utilizzare il seguente codice per trovare tutti i valori duplicati nella colonna “team”:

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

Questa query restituisce i seguenti risultati:

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

Questo ci dice che i valori “Rockets” e “Mavs” compaiono più volte nel campo “team”.

Tieni presente che possiamo semplicemente sostituire $team con $position per cercare invece valori duplicati nel campo “posizione”:

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

Questa query restituisce i seguenti risultati:

 { name: 'Guard' }

Questo ci dice che “Guardia” appare più volte nel campo “posizione”.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni comuni in MongoDB:

MongoDB: come aggiungere un nuovo campo a una raccolta
MongoDB: come raggruppare e contare
MongoDB: come raggruppare per più campi

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *