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

MongoDB\Collection::mapReduce()

Nesta página

  • Definição
  • Parâmetros
  • Valores de retorno
  • 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.

comentário
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.
limite
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.

espécie
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.

verboso
booleano
Especifica se as informações de tempo devem ser incluídas nas informações do resultado.
Escreva preocupação

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 MongoDB\MapReduceResult objeto , que permite a iteração dos resultados de redução de mapa, independentemente do método de saída (por exemplo, in-line, 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 redução de mapa pode gravar resultados em uma collection ou retornar os resultados embutidos. Se você gravar a saída de redução de mapa em uma collection, poderá executar operações subsequentes de redução de mapa 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 redução de mapa 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()

Próximo

rename()