MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

3 façons de renvoyer des valeurs distinctes dans MongoDB

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.