Compartilhar via


distinct

O distinct comando é usado para localizar os valores exclusivos de um campo especificado em uma única coleção. Esse comando é útil quando você precisa identificar o conjunto de valores distintos para um campo sem recuperar todos os documentos ou quando você precisa executar operações como filtragem ou agrupamento com base em valores exclusivos.

Sintaxe

A sintaxe básica do comando é a distinct seguinte:

db.collection.distinct(field, query, options)
  • field: o campo que recebe os valores distintos retornados.
  • query: opcional. Uma consulta que especifica os documentos dos quais recuperar os valores distintos.
  • options: opcional. Outras opções para o comando.

Exemplos

Aqui estão exemplos usando a estrutura JSON de exemplo fornecida.

Exemplo 1: localizar categorias distintas em vendas

Para localizar o distinto categoryName na salesByCategory matriz:

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

Saída de exemplo

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

Exemplo 2: localizar nomes de eventos distintos em eventos de promoção

Para localizar o distinto eventName na promotionEvents matriz:

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

Saída de exemplo

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

Exemplo 3: localizar percentuais de desconto distintos para um evento específico

Para localizar o distinto discountPercentage na discounts matriz do evento "Venda de Verão":

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

Saída de exemplo

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