MongoDB\Collection::distinct()
Definição
Parâmetros
$fieldName
: string- O campo para o qual retornar valores distintos.
$filter
: array|object- Os critérios de filtro que especificam os documentos a partir dos quais recuperar os valores distintos.
$options
: arrayUma array especificando as opções desejadas.
NomeTipoDescriçãoagrupamento
array|object
A colocação permite que os usuários especifiquem regras específicas do idioma para comparação de string , como regras para letras maiúsculas e marcas de acento. Ao especificar agrupamento, o campo
locale
é obrigatório; todos os outros campos de agrupamento são opcionais. Para obter descrições dos campos, consulte Documento de agrupamento.Se o agrupamento não for especificado, mas a coleção tiver um agrupamento padrão, a operação usará o agrupamento especificado para a coleção. Se nenhum agrupamento for especificado para a coleção nem para a operação, o MongoDB usará a comparação binária simples usada nas versões anteriores para comparações de strings.
comment
misto
Permite ao usuário especificar um comentário arbitrário para ajudar a rastrear a operação por meio do profiler de banco de dados, da saída currentOp e dos registros.
Esta opção está disponível desde o MongoDB 4.4 e resultará em uma exceção no momento da execução se for especificada para uma versão mais antiga do servidor.
Novidade na versão 1.13.
maxTimeMS
inteiro
O limite de tempo cumulativo em milésimos de segundo para operações de processamento no cursor. O MongoDB aborta a operação o mais cedo possível após o ponto de interrupção.
readConcern
Preocupação de leitura a ser usada para a operação. O padrão é a preocupação de leitura da coleção.
Não é possível especificar uma preocupação de leitura para operações individuais como parte de uma transação. Em vez disso, defina a opção
readConcern
ao iniciar a transação.readPreference
Preferência de leitura a ser usada na operação. O padrão é a preferência de leitura da coleção.
session
Sessão do cliente a ser associada à operação.
Novidade na versão 1.3.
typeMap
array
O mapa de tipos para aplicar aos cursores, que determina como os documentos BSON são convertidos para valores PHP. O padrão é o mapa de tipos da coleção.
Novidade na versão 1.5.
Return Values
Uma array dos valores distintos.
Erros/exceções
MongoDB\Exception\UnexpectedValueException
se a resposta do comando do servidor estiver malformada.
MongoDB\Exception\UnsupportedException
se as opções forem usadas e não aceitas pelo servidor selecionado (p. ex., collation
, readConcern
, writeConcern
).
MongoDB\Exception\InvalidArgumentException
para erros relacionados à análise de parâmetros ou opções.
MongoDB\Driver\Exception\RuntimeException para outros erros no nível da extensão (por exemplo erros de conexão).
Comportamento
Ao avaliar critérios de query, oMongoDB compara tipos e valores de acordo com suas próprias regras de comparação para BSON types, o que difere da comparação do e digite PHP malabarismo regras. Ao corresponder a um tipo BSON especial, os critérios de query devem usar a respectiva classe BSON na extensão (por exemplo use MongoDB\BSON\ObjectId para corresponder a um ObjectId).
Exemplos
Valores Distintos de Devolução para um Campo
O exemplo seguinte identifica os valores distintos para o campo borough
na collection restaurants
no reconhecimento de data center test
.
$collection = (new MongoDB\Client)->test->restaurants; $distinct = $collection->distinct('borough'); var_dump($distinct);
A saída seria então semelhante a:
array(6) { [0]=> string(5) "Bronx" [1]=> string(8) "Brooklyn" [2]=> string(9) "Manhattan" [3]=> string(7) "Missing" [4]=> string(6) "Queens" [5]=> string(13) "Staten Island" }
Retornar valores distintos usando um filtro
O exemplo a seguir identifica os valores distintos para o campo cuisine
na collection restaurants
no reconhecimento de data center test
para documento onde o borough
é Queens
:
$collection = (new MongoDB\Client)->test->restaurants; $distinct = $collection->distinct('cuisine', ['borough' => 'Queens']); var_dump($distinct);
A saída seria então semelhante a:
array(75) { [0]=> string(6) "Afghan" [1]=> string(7) "African" [2]=> string(9) "American " [3]=> string(8) "Armenian" [4]=> string(5) "Asian" [5]=> string(10) "Australian" [6]=> string(15) "Bagels/Pretzels" [7]=> string(6) "Bakery" [8]=> string(11) "Bangladeshi" [9]=> string(8) "Barbecue" [10]=> string(55) "Bottled beverages, including water, sodas, juices, etc." [11]=> string(9) "Brazilian" [12]=> string(4) "Cafe" [13]=> string(16) "Café/Coffee/Tea" [14]=> string(5) "Cajun" [15]=> string(9) "Caribbean" [16]=> string(7) "Chicken" [17]=> string(7) "Chinese" [18]=> string(13) "Chinese/Cuban" [19]=> string(16) "Chinese/Japanese" [20]=> string(11) "Continental" [21]=> string(6) "Creole" [22]=> string(5) "Czech" [23]=> string(12) "Delicatessen" [24]=> string(6) "Donuts" [25]=> string(16) "Eastern European" [26]=> string(8) "Egyptian" [27]=> string(7) "English" [28]=> string(8) "Filipino" [29]=> string(6) "French" [30]=> string(17) "Fruits/Vegetables" [31]=> string(6) "German" [32]=> string(5) "Greek" [33]=> string(10) "Hamburgers" [34]=> string(16) "Hotdogs/Pretzels" [35]=> string(31) "Ice Cream, Gelato, Yogurt, Ices" [36]=> string(6) "Indian" [37]=> string(10) "Indonesian" [38]=> string(5) "Irish" [39]=> string(7) "Italian" [40]=> string(8) "Japanese" [41]=> string(13) "Jewish/Kosher" [42]=> string(30) "Juice, Smoothies, Fruit Salads" [43]=> string(6) "Korean" [44]=> string(64) "Latin (Cuban, Dominican, Puerto Rican, South & Central American)" [45]=> string(13) "Mediterranean" [46]=> string(7) "Mexican" [47]=> string(14) "Middle Eastern" [48]=> string(8) "Moroccan" [49]=> string(25) "Not Listed/Not Applicable" [50]=> string(18) "Nuts/Confectionary" [51]=> string(5) "Other" [52]=> string(9) "Pakistani" [53]=> string(16) "Pancakes/Waffles" [54]=> string(8) "Peruvian" [55]=> string(5) "Pizza" [56]=> string(13) "Pizza/Italian" [57]=> string(6) "Polish" [58]=> string(10) "Portuguese" [59]=> string(7) "Russian" [60]=> string(6) "Salads" [61]=> string(10) "Sandwiches" [62]=> string(30) "Sandwiches/Salads/Mixed Buffet" [63]=> string(7) "Seafood" [64]=> string(9) "Soul Food" [65]=> string(18) "Soups & Sandwiches" [66]=> string(12) "Southwestern" [67]=> string(7) "Spanish" [68]=> string(5) "Steak" [69]=> string(5) "Tapas" [70]=> string(7) "Tex-Mex" [71]=> string(4) "Thai" [72]=> string(7) "Turkish" [73]=> string(10) "Vegetarian" [74]=> string(29) "Vietnamese/Cambodian/Malaysia" }
Veja também
referência de comando distinta no manual do MongoDB