Menu Docs
Página inicial do Docs
/ / /
Manual da Biblioteca PHP
/ /

MongoDB\Collection::mapReduce()

Nesta página

  • Definição
  • Parâmetros
  • Return Values
  • Erros/exceções
  • Comportamento
  • Exemplo
  • Veja também

Descontinuado desde a versão 1.12.

Novidade da versão 1.2.

MongoDB\Collection::mapReduce()

O comando mapReduce permite que você execute operações de aggregation de map-reduce em uma collection.

function mapReduce(
MongoDB\BSON\JavascriptInterface $map,
MongoDB\BSON\JavascriptInterface $reduce,
string|array|object $out,
array $options = []
): MongoDB\MapReduceResult
$map : MongoDB\BSON\Javascript

Uma função JavaScript que associa ou "mapeia" um valor com uma chave e emite o par de chave e valor.

Observação

Passar uma instância JavaScript com um escopo está obsoleto. Coloque todas as variáveis de escopo na opção scope da operação MapReduce.

$reduce : MongoDB\BSON\Javascript

Uma função JavaScript que "reduz" a um único objeto todos os valores associados a uma chave específica.

Observação

Passar uma instância JavaScript com um escopo está obsoleto. Coloque todas as variáveis de escopo na opção scope da operação MapReduce.

$out : string|array|objeto
Especifica onde produzir o resultado da operação map-reduce. Você pode gerar saída para uma collection ou retornar o resultado in-line. Em um membro primário de um conjunto de réplicas, você pode gerar saída para uma collection ou in-line, mas em um secundário, somente a saída in-line é possível.
$options : array

Uma array especificando as opções desejadas.

Nome
Tipo
Descrição

bypassDocumentValidation

booleano

Se true, permite que a operação de gravação contorne a validação do nível do documento. O padrão é false.

Isso só se aplica quando os resultados são enviados para uma collection.

agrupamento

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.

finalizar

Segue o método de redução e modifica a saída.

Passar uma instância JavaScript com um escopo está obsoleto. Coloque todas as variáveis de escopo na opção scope da operação MapReduce.

jsMode

booleano

Especifica se serão convertidos dados intermediários em formato BSON entre a execução do mapa e funções de redução.

limit

inteiro

Especifica um número máximo de documentos para a entrada na função de mapa.

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.

Query

array|object

Especifica os critérios de seleção utilizando operadores de query para determinar a entrada de documentos para a função de mapa.

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.

Esta opção será ignorada quando os resultados forem enviados para uma collection.

escopo

array|object

Especifica variáveis globais que são acessíveis nas funções de map-reduce e finalizar.

session

Sessão do cliente a ser associada à operação.

Novidade na versão 1.3.

sort

array|object

A especificação de classificação para a ordenação dos resultados.

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.

verbose

booleano

Especifica se as informações de tempo devem ser incluídas nas informações do resultado.

writeConcern

Preocupação de gravação a ser usada na operação. O padrão é a preocupação de gravação da coleção.

Não é possível especificar uma preocupação de gravação para operações individuais como parte de uma transação. Em vez disso, defina a opção writeConcern ao iniciar a transação.

Um objeto MongoDB\MapReduceResult , que permite a iteração dos resultados de map-reduce, independentemente do método de saída (por exemplo, inline, collection) por meio do método IteratorAggregate interface. Ele também fornece acesso a estatísticas de comando.

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\Exception\UnexpectedValueException se a resposta do comando do servidor estiver malformada.

MongoDB\Driver\Exception\RuntimeException para outros erros no nível da extensão (por exemplo erros de conexão).

No MongoDB, a operação de map-reduce pode gravar resultados em uma collection ou retornar os resultados embutidos. Se você gravar a saída de map-reduce em uma collection, poderá executar operações subsequentes de map-reduce na mesma collection de entrada que mesclam, substituem, mesclam ou reduzem novos resultados com resultados anteriores. Consulte Redução de mapa e Executar redução de mapa incremental para detalhes e exemplos.

Ao retornar os resultados de uma operação de map-reduce em linha, os documentos resultantes devem estar dentro do limite de tamanho do documento BSON , que atualmente é 16 megabytes.

O MongoDB oferece suporte a operações de redução de mapa em coleções fragmentadas. As operações de redução de mapa também podem gerar resultados para uma coleção fragmentada. Consulte redução de mapa e coleções fragmentadas.

Este exemplo utilizará as populações da cidade para calcular a população geral de cada estado.

<?php
$collection = (new MongoDB\Client)->test->zips;
$map = new MongoDB\BSON\Javascript('function() { emit(this.state, this.pop); }');
$reduce = new MongoDB\BSON\Javascript('function(key, values) { return Array.sum(values) }');
$out = ['inline' => 1];
$populations = $collection->mapReduce($map, $reduce, $out);
foreach ($populations as $pop) {
var_dump($pop);
};

A saída seria então semelhante a:

object(stdClass)#2293 (2) {
["_id"]=>
string(2) "AK"
["value"]=>
float(544698)
}
object(stdClass)#2300 (2) {
["_id"]=>
string(2) "AL"
["value"]=>
float(4040587)
}
object(stdClass)#2293 (2) {
["_id"]=>
string(2) "AR"
["value"]=>
float(2350725)
}
object(stdClass)#2300 (2) {
["_id"]=>
string(2) "AZ"
["value"]=>
float(3665228)
}
  • Referência do comando mapReduce no manual do MongoDB

  • Documentação de redução de mapa no manual do MongoDB

Voltar

listSearchIndexes()