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

MongoDB distinct()

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.