Docs Menu
Docs Home
/ /
Map-Reduce
/ / /

Solucionar problemas de la función Map

Nota

Canalización de agregación como alternativa a Map-Reduce

A partir de MongoDB 5.0, map-reduce está obsoleto:

Para ejemplos de alternativas de pipeline de agregación a map-reduce, consulte:

Una canalización de agregación también es más fácil de solucionar que una operación de mapa-reducción.

La map función es una función de JavaScript que asocia o “mapea” un valor con una clave y emite el par clave-valor durante una operación de mapeo-reducción.

Para verificar los pares key y value emitidos por la función map, guardar su propia función emit.

Considere una colección orders que contiene documentos del siguiente prototipo:

{
_id: ObjectId("50a8240b927d5d8b5891743c"),
cust_id: "abc123",
ord_date: new Date("Oct 04, 2012"),
status: 'A',
price: 250,
items: [ { sku: "mmm", qty: 5, price: 2.5 },
{ sku: "nnn", qty: 5, price: 2.5 } ]
}
  1. Define la función map que asigna price a cust_id para cada documento y emite el par cust_id y price:

    var map = function() {
    emit(this.cust_id, this.price);
    };
  2. Define la función emit para imprimir la clave y el valor:

    var emit = function(key, value) {
    print("emit");
    print("key: " + key + " value: " + tojson(value));
    }
  3. Invoque la función map con un solo documento de la colección orders:

    var myDoc = db.orders.findOne( { _id: ObjectId("50a8240b927d5d8b5891743c") } );
    map.apply(myDoc);
  4. Verifique que el par de clave y valor sea tal como lo esperaba.

    emit
    key: abc123 value:250
  5. Invoque la función map con varios documentos de la colección orders:

    var myCursor = db.orders.find( { cust_id: "abc123" } );
    while (myCursor.hasNext()) {
    var doc = myCursor.next();
    print ("document _id= " + tojson(doc._id));
    map.apply(doc);
    print();
    }
  6. Verifique que los pares clave y valor sean los esperados.

Tip

La map función debe cumplir varios requisitos. Para obtener una lista completa de los requisitos de la map función, consulte el mapReduce método mongosh auxiliar,db.collection.mapReduce() o.

Volver

Realizar con incrementos

En esta página