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.
Les valeurs distinctes sont celles dont les doublons redondants ont été supprimés. Des valeurs distinctes sont des valeurs uniques. Par exemple, si vous avez 2 ou 3 documents avec la même valeur, le distinct
La commande renverra une seule valeur.
db.collection.distinct()
est une méthode shell wrapper pour le distinct
commande.
Exemple
Supposons que nous ayons une collection appelée pets
avec les documents suivants.
{ "_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 }
Nous pouvons utiliser le distinct()
méthode pour renvoyer les types d'animaux distincts.
db.pets.distinct( "type" )
Résultat :
[ "Bat", "Cat", "Dog" ]
Ainsi, même s'il y a quatre chiens et deux chats, le tableau n'en contient qu'un de chaque. Le distinct()
méthode a supprimé les valeurs en double.
Le document original n'a qu'une seule chauve-souris et donc le distinct()
la méthode ne change pas cela - il n'y avait pas de valeurs en double à dédupliquer.
Documents intégrés
Vous pouvez utiliser la notation par points pour obtenir des valeurs distinctes à partir d'un champ intégré
Supposons que nous ayons une collection appelée products
qui contient les documents suivants :
{ "_id" : 1, "product" : { "name" : "Shirt", "color" : "White" }, "sizes" : [ "S", "M", "L" ] } { "_id" : 2, "product" : { "name" : "Shirt", "color" : "Green" }, "sizes" : [ "S", "M", "XL" ] } { "_id" : 3, "product" : { "name" : "Shirt", "color" : "White" }, "sizes" : [ "S", "M", "L" ] } { "_id" : 4, "product" : { "name" : "Shorts", "color" : "Green" }, "sizes" : [ "M", "XS" ] } { "_id" : 5, "product" : { "name" : "Shorts", "color" : "Brown" }, "sizes" : [ "S", "M" ] } { "_id" : 6, "product" : { "name" : "Cap", "color" : "Purple" }, "sizes" : [ "M" ] } { "_id" : 7, "product" : { "name" : "Shoes", "color" : "Brown" }, "sizes" : [ "S", "M", "L" ] } { "_id" : 8, "product" : { "name" : "Shirt", "color" : "White" }, "sizes" : [ "M", "L", "XL" ] } { "_id" : 9, "product" : { "name" : "Cap", "color" : "Green" }, "sizes" : [ "M", "L" ] }
Nous pouvons utiliser la requête suivante pour renvoyer des valeurs distinctes pour les noms de produits.
db.products.distinct(
"product.name"
)
Résultat :
[ "Cap", "Shirt", "Shoes", "Shorts" ]
On pourrait faire la même chose pour la color
champ.
db.products.distinct(
"product.color"
)
Résultat :
[ "Brown", "Green", "Purple", "White" ]
Obtenir des valeurs distinctes à partir d'un tableau
Voici comment utiliser le distinct()
méthode pour obtenir les valeurs distinctes du tableau ci-dessus.
db.products.distinct( "sizes" )
Résultat :
[ "L", "M", "S", "XL", "XS" ]
Utilisez distinct()
avec une requête
Vous pouvez fournir une requête pour spécifier les documents à partir desquels récupérer les valeurs distinctes. Pour cela, ajoutez la requête après le champ.
Exemple :
db.products.distinct( "product.name", { sizes: "S" } )
Résultat :
[ "Shirt", "Shoes", "Shorts" ]
Plus d'informations
Le db.collection.distinct()
la méthode accepte également un collation
paramètre, qui vous permet de spécifier des règles spécifiques à la langue pour la comparaison de chaînes, telles que des règles pour la casse des lettres et les accents.
Consultez la documentation MongoDB pour plus d'informations.