Udostępnij przez


distinct

Polecenie distinct służy do znajdowania unikatowych wartości dla określonego pola w pojedynczej kolekcji. To polecenie jest przydatne, gdy konieczne jest zidentyfikowanie zestawu unikatowych wartości dla pola bez pobierania wszystkich dokumentów lub wykonywania operacji, takich jak filtrowanie lub grupowanie na podstawie unikatowych wartości.

Składnia

Podstawowa składnia distinct polecenia jest następująca:

db.collection.distinct(field, query, options)
  • field: pole, które odbiera zwrócone unikatowe wartości.
  • query: opcjonalne. Zapytanie określające dokumenty, z których mają być pobierane odrębne wartości.
  • options: opcjonalne. Inne opcje polecenia.

Przykłady

Oto przykłady użycia podanej przykładowej struktury JSON.

Przykład 1. Znajdowanie odrębnych kategorii w sprzedaży

Aby znaleźć unikatowe categoryName nazwy w tablicy salesByCategory :

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

Przykładowe dane wyjściowe

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

Przykład 2. Znajdowanie unikatowych nazw zdarzeń w zdarzeniach podwyższania poziomu

Aby znaleźć unikatowe eventName nazwy w tablicy promotionEvents :

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

Przykładowe dane wyjściowe

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

Przykład 3. Znajdowanie odrębnych wartości procentowych rabatu dla określonego zdarzenia

Aby znaleźć distinct discountPercentage w tablicy discounts dla zdarzenia "Summer Sale":

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

Przykładowe dane wyjściowe

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