Docs Menu
Docs Home
/ /
/ / /

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 de todos los requisitos de la map función, consulte,mapReduce o mongosh método db.collection.mapReduce() auxiliar.

Volver

Realizar con incrementos

En esta página