Les valeurs distinctes sont les valeurs dont les doublons redondants ont été supprimés. En d'autres termes, des valeurs distinctes sont des valeurs uniques.
Dans MongoDB, il existe plusieurs façons de renvoyer des valeurs distinctes dans une requête. Cet article présente 3 façons de retourner des valeurs distinctes dans le shell mongo.
Exemple de données
Les exemples sur cette page utilisent la collection suivante appelée 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 }
Le distinct()
Méthode
Dans MongoDB, le db.collection.distinct()
trouve les valeurs distinctes d'un champ spécifié dans une seule collection ou vue et renvoie les résultats dans un tableau.
Exemple :
db.pets.distinct( "type" )
Résultat :
[ "Bat", "Cat", "Dog" ]
Ces trois valeurs sont les valeurs distinctes pour le type
champ dans les documents ci-dessus.
Les pets
part nomme simplement la collection pour laquelle renvoyer les valeurs distinctes.
Le db.collection.distinct()
method est une méthode shell wrapper pour le distinct
commande (ci-dessous).
Le distinct
Commande
Dans MongoDB, le distinct
La commande d'agrégation trouve les valeurs distinctes d'un champ spécifié dans une seule collection.
Il renvoie un document qui contient un tableau des valeurs distinctes, ainsi qu'un document intégré avec les statistiques de requête et le plan de requête.
db.runCommand ( { distinct: "pets", key: "type" } )
Résultat :
{ "values" : [ "Bat", "Cat", "Dog" ], "ok" : 1 }
Nous pouvons voir que les mêmes valeurs distinctes sont renvoyées, sauf que cette fois-ci, elles se trouvent dans un document qui contient également les autres informations.
Le $group
Opérateur d'agrégation
Selon vos besoins, vous pouvez également utiliser le $group
opérateur d'agrégation pour renvoyer des valeurs distinctes.
Exemple :
db.pets.aggregate( [ { $group : { _id : "$type" } } ] )
Résultat :
{ "_id" : "Cat" } { "_id" : "Bat" } { "_id" : "Dog" }
Dans ce cas, les valeurs distinctes sont retournées dans des documents séparés.
Cette approche peut être utile si vous vous attendez à ce que vos résultats soient importants. Si vos résultats dépassent la taille maximale de BSON (16 mégaoctets au moment de la rédaction), vous devrez peut-être utiliser cette approche.