Partager via


distinct

La distinct commande est utilisée pour rechercher les valeurs uniques d’un champ spécifié dans une collection unique. Cette commande est utile lorsque vous devez identifier l’ensemble de valeurs distinctes d’un champ sans récupérer tous les documents ou lorsque vous devez effectuer des opérations telles que le filtrage ou le regroupement en fonction de valeurs uniques.

Syntaxe

La syntaxe de base de la distinct commande est la suivante :

db.collection.distinct(field, query, options)
  • field: champ qui reçoit les valeurs distinctes retournées.
  • query:Optionnel. Requête qui spécifie les documents à partir desquels récupérer les valeurs distinctes.
  • options:Optionnel. Autres options pour la commande.

Examples

Voici des exemples utilisant l’exemple de structure JSON fourni.

Exemple 1 : Rechercher des catégories distinctes dans les ventes

Pour rechercher les éléments distincts categoryName dans le salesByCategory tableau :

db.stores.distinct("sales.salesByCategory.categoryName")

Exemple de sortie

[mongos] StoreData> db.stores.distinct("sales.salesByCategory.categoryName")
[
  {
    _id: 'Discount Derby',
    discounts: [
      { categoryName: 'Bath Sheets', discountPercentage: 25 },
      { categoryName: 'Tablecloths', discountPercentage: 25 },
      { categoryName: 'Drapes', discountPercentage: 25 }
    ]
  }
]
[mongos] StoreData> db.stores.distinct("sales.salesByCategory.categoryName")
[
  'Music Theory Books',
  'Superfoods',
  'Harmonicas',
  'Garden Tools',
  ... 883 more items
]  

Exemple 2 : Rechercher des noms d’événements distincts dans les événements de promotion

Pour rechercher les éléments distincts eventName dans le promotionEvents tableau :

db.stores.distinct("promotionEvents.eventName")

Exemple de sortie

[mongos] StoreData> db.stores.distinct("promotionEvents.eventName")
[
{
    _id: 'Super Saver Celebration',
    discounts: [
      { categoryName: 'Face Towels', discountPercentage: 25 },
      { categoryName: 'Printer Ribbons', discountPercentage: 25 },
      { categoryName: 'Chromebooks', discountPercentage: 25 }
    ]
    }
]

Exemple 3 : Rechercher des pourcentages de remise distincts pour un événement spécifique

Pour trouver la différence discountPercentage dans le discounts tableau de l’événement « Summer Sale » :

db.stores.distinct("promotionEvents.discounts.discountPercentage", { "promotionEvents.eventName": "Incredible Discount Days" })

Exemple de sortie

[mongos] StoreData> db.stores.distinct("promotionEvents.discounts.discountPercentage", { "promotionEvents.eventName": "Incredible Discount Days" })
[
   6, 17, 22, 25,  9, 15, 14,
   7, 12, 19, 24,  5, 20, 10,
  23, 16, 18, 21, 13, 11,  8
]