MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

3 modi per restituire valori distinti in MongoDB

I valori distinti sono quei valori con duplicati ridondanti rimossi. In altre parole, valori distinti sono valori unici.

In MongoDB ci sono alcuni modi in cui possiamo restituire valori distinti in una query. Questo articolo presenta 3 modi per restituire valori distinti nella shell mongo.

Dati di esempio

Gli esempi in questa pagina utilizzano la seguente raccolta chiamata pets :

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
{ "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 }
{ "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 }
{ "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }

Il distinct() Metodo

In MongoDB, il db.collection.distinct() trova i valori distinti per un campo specificato in una singola raccolta o vista e restituisce i risultati in una matrice.

Esempio:

db.pets.distinct( "type" )

Risultato:

[ "Bat", "Cat", "Dog" ]

Questi tre valori sono i valori distinti per il type campo nei documenti sopra.

Gli pets part nomina semplicemente la raccolta da cui restituire i valori distinti.

Il db.collection.distinct() method è un metodo wrapper della shell per il distinct comando (sotto).

Il distinct Comando

In MongoDB, il distinct Il comando aggregation trova i valori distinti per un campo specificato in una singola raccolta.

Restituisce un documento che contiene una matrice di valori distinti, nonché un documento incorporato con le statistiche della query e il piano della query.

db.runCommand ( { distinct: "pets", key: "type" } )

Risultato:

{ "values" : [ "Bat", "Cat", "Dog" ], "ok" : 1 }

Possiamo vedere che vengono restituiti gli stessi valori distinti, tranne che questa volta si trovano in un documento che contiene anche le altre informazioni.

Il $group Operatore di aggregazione

A seconda delle tue esigenze, puoi anche utilizzare il $group operatore di aggregazione per restituire valori distinti.

Esempio:

db.pets.aggregate( [ { $group : { _id : "$type" } } ] )

Risultato:

{ "_id" : "Cat" }
{ "_id" : "Bat" }
{ "_id" : "Dog" }

In questo caso i valori distinti vengono restituiti in documenti separati.

Questo approccio potrebbe essere utile se ti aspetti che i risultati siano grandi. Se i risultati sono maggiori della dimensione massima di BSON (16 megabyte al momento della scrittura), potrebbe essere necessario utilizzare questo approccio.