Megosztás:


distinct

A distinct parancs egy adott mező egyedi értékeinek megkeresésére szolgál egyetlen gyűjteményben. Ez a parancs akkor hasznos, ha egy mező különböző értékeit kell azonosítania az összes dokumentum beolvasása nélkül, vagy ha olyan műveleteket kell végrehajtania, mint a szűrés vagy a csoportosítás egyedi értékek alapján.

Szemantika

A parancs alapszintaxisa a distinct következő:

db.collection.distinct(field, query, options)
  • field: A visszaadott eltérő értékeket fogadó mező.
  • query: Nem kötelező. Lekérdezés, amely meghatározza azokat a dokumentumokat, amelyekből lekérheti a különböző értékeket.
  • options: Nem kötelező. A parancs egyéb beállításai.

Példák

Az alábbi példák a megadott JSON-mintastruktúrát használják.

1. példa: Különböző kategóriák keresése az értékesítésekben

A tömbben található eltérő értékek categoryName megkeresése salesByCategory :

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

Példakimenet

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

2. példa: Különböző eseménynevek keresése a promóciós eseményekben

A tömbben található eltérő értékek eventName megkeresése promotionEvents :

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

Példakimenet

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

3. példa: Eltérő kedvezmény százalékos értékének megkeresése egy adott eseményhez

A "Summer Sale" esemény tömbjének discounts különbözőségeinek discountPercentage megkeresése:

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

Példakimenet

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