Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/
Documentación de la API
/

MongoDB\Collection::mapReduce()

Obsoleto desde la versión 1.12.

Novedad en la versión 1.2.

MongoDB\Collection::mapReduce()

La El comando mapReduce te permite ejecutar operaciones de agregación map-reduce sobre una colección.

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

Una función de JavaScript que asocia o "mapea" un valor con una clave y emite el par de clave y valor.

Nota

Pasar una instancia de JavaScript con un scope está obsoleto. Coloca todas las variables de alcance en la opción scope de la operación MapReduce.

$reduce :MongoDB\BSON\Javascript

Una función de JavaScript que "reduce" a un único objeto todos los valores asociados con una clave particular.

Nota

Pasar una instancia de JavaScript con un scope está obsoleto. Coloca todas las variables de alcance en la opción scope de la operación MapReduce.

$out : cadena|matriz|objeto
Especifica dónde exportar el resultado de la operación map-reduce. Puedes emitir a una colección o devolver el resultado en línea. En un miembro primario de un set de réplicas, puedes generar salida tanto a una colección como en línea, pero en un secundario, solo es posible la salida en línea.
$options : arreglo

Una matriz que especifica las opciones deseadas.

Nombre
Tipo
Descripción

bypassDocumentValidation

booleano

Si es true, permite que la operación de escritura evite la validación a nivel de documento. El valor predeterminado es false.

Esto solo aplica cuando los resultados se envían a una colección.

intercalación

arreglo|objeto

Laintercalación permite a los usuarios especificar reglas específicas del idioma para la comparación de cadenas, como el uso de mayúsculas y minúsculas y tildes. Al especificar la intercalación, el locale campo es obligatorio; todos los demás campos son opcionales. Para obtener descripciones de los campos, consulte el documento de intercalación.

Si la intercalación no está especificada pero la colección tiene una intercalación predeterminada, la operación utiliza la intercalación especificada para la colección. Si no se especifica una intercalación para la colección o para la operación, MongoDB utiliza la comparación binaria simple utilizada en versiones anteriores para comparar cadenas.

comment

mixto

Permite a los usuarios especificar un comentario arbitrario para ayudar a rastrear la operación a través del generador de perfiles de base de datos, la salidacurrentOp y los registros.

Novedades en la versión 1.13.

finaliza

Sigue el método de reducción y modifica la salida.

Pasar una instancia de JavaScript con un scope está obsoleto. Coloca todas las variables de alcance en la opción scope de la operación MapReduce.

jsMode

booleano

Especifica si se deben convertir los datos intermedios al formato BSON entre la ejecución de las funciones de mapa y reducción.

limit

entero

Especifica un número máximo de documentos para la entrada en la función de mapeo.

maxTimeMS

entero

El límite de tiempo acumulado en milisegundos para las operaciones de procesamiento en el cursor. MongoDB aborta la operación en el siguiente punto de interrupción..

Consulta

arreglo|objeto

Especifica los criterios de selección usando operadores del query para determinar los documentos de entrada en la función mapa.

readConcern

Nivel de consistencia de lectura para usar en la operación. Por defecto, adopta el nivel de consistencia de lectura de la colección.

No es posible especificar una preocupación de lectura para operaciones individuales como parte de una transacción. En su lugar, configure la readConcern opción al iniciar la transacción.

readPreference

Preferencia de lectura a utilizar para la operación. Por defecto, se utiliza la preferencia de lectura de la colección.

Esta opción se ignorará cuando los resultados se envíen a una colección.

Alcance

arreglo|objeto

Especifica variables globales a las que se puede acceder en las funciones map, reduce y finalize.

sesión

Sesión de cliente para asociar a la operación.

Nueva en la versión 1.3.

sort

arreglo|objeto

La especificación del orden para la clasificación de los resultados.

typeMap

arreglo

El mapa de tipos para aplicar a cursores, que determina cómo se convierten los documentos BSON en valores PHP. Por defecto, se utiliza el mapa de tipos de la colección.

verbose

booleano

Especifica si se debe incluir la información sobre el tiempo en la información del resultado.

writeConcern

nivel de confirmación de escritura (write concern) a usar en la operación. Por defecto, se aplica el nivel de confirmación de escritura (write concern) de la colección.

No es posible especificar una preocupación de escritura para operaciones individuales como parte de una transacción. En su lugar, configure la writeConcern opción al iniciar la transacción.

A Objeto MongoDB\MapReduceResult, que permite la iteración de los resultados de map-reduce independientemente del método de salida (p. ej., en línea, colección) a través de la interfaz IteratorAggregate. También brinda acceso a estadísticas de comandos.

MongoDB\Exception\UnsupportedException si se utilizan opciones que no son compatibles con el servidor seleccionado (porcollation readConcernwriteConcernejemplo,,,).

MongoDB\Exception\InvalidArgumentException por errores relacionados con el análisis de parámetros u opciones.

MongoDB\Exception\UnexpectedValueException si la respuesta del comando del servidor era incorrecta.

MongoDB\Driver\Exception\RuntimeException para otros errores en el nivel de extensión (por ejemplo, errores de conexión).

En MongoDB, la operación de map-reduce puede guardar los resultados en una colección o devolver los resultados en línea. Si escribes la salida de map-reduce en una colección, puedes realizar operaciones posteriores de map-reduce en la misma colección de entrada que reemplacen la fusión, fusionen o reduzcan nuevos resultados con los resultados anteriores. Consulta Map-Reduce y Ejecutar Map-Reduce incremental para obtener detalles y ejemplos.

Al devolver los resultados de una operación map-reduce en línea, los documentos de resultado deben estar dentro del límite de Tamaño del documento BSON, que actualmente es de 16 megabytes.

MongoDB admite operaciones de map-reduce en colecciones fragmentadas. Estas operaciones también pueden generar los resultados en una colección fragmentada. Consulte Map-Reduce y Colecciones Fragmentadas.

Este ejemplo utilizará poblaciones de ciudades para calcular la población total 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);
};

La vista de salida se ilustraría como sigue:

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)
}
  • mapReduce referencia del comando en el manual de MongoDB

  • Map-Reduce documentación en el manual de MongoDB

En esta página