Sdílet prostřednictvím


distinct

Příkaz distinct slouží k vyhledání jedinečných hodnot pro zadané pole v jedné kolekci. Tento příkaz je užitečný, když potřebujete identifikovat sadu jedinečných hodnot pro pole, aniž byste museli načítat všechny dokumenty nebo když potřebujete provádět operace, jako je filtrování nebo seskupení na základě jedinečných hodnot.

Syntaxe

Základní syntaxe distinct příkazu je následující:

db.collection.distinct(field, query, options)
  • field: Pole, které přijímá vrácené jedinečné hodnoty.
  • query: Volitelné. Dotaz, který určuje dokumenty, ze kterých se mají načíst jedinečné hodnoty.
  • options: Volitelné. Další možnosti příkazu

Examples

Tady jsou příklady použití poskytnuté ukázkové struktury JSON.

Příklad 1: Vyhledání jedinečných kategorií v prodeji

Vyhledání jedinečných salesByCategory hodnot categoryName v poli:

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

Ukázkový výstup

[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
]  

Příklad 2: Vyhledání jedinečných názvů událostí v událostech povýšení

Vyhledání jedinečných promotionEvents hodnot eventName v poli:

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

Ukázkový výstup

[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 }
    ]
    }
]

Příklad 3: Vyhledání jedinečných procent slev pro konkrétní událost

Pokud chcete najít jedinečné hodnoty discountPercentage v discounts poli pro akci "Letní prodej":

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

Ukázkový výstup

[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
]