User Tools

Site Tools


nosql:up_and_running_with_nosql_databases:reducing_data

On souhaite parfois avoir un résumé d'un ensemble de données. Les systèmes NoSQL, CouchDB inclut, permettent de définir une reduce function côté serveur.

// Map function
function(doc) {
  if(doc.category) { // on vérifie la présence d'un champs catégorie
    emit(doc.category, doc); // on renvoie les docs avec comme clé leur catégorie
  }
}
// fonction reduce
// appelée une fois pour chaqué clé différente fournie par la fonction map (donc les clés identiques ne sont pas appelées plusieurs fois)
function(key, values, rereduce) {
  return values.length; // on renvoie le nombre de valeurs attachées à la clé

note : si la fonction reduce renvoie plus d'une valeur, la fonction reduce est appelée récursivement avec rereduce set to true, ce qui peut aider à réduire des ensembles de données complexes et/ou nichées.

La fonction reduce marche de concert avec la fonction map qui va fournir un ensemble clé/valeurs que la fonction reduce va transformer en un seule valeur par clé.

Cela permet de récupérer des données résumées diectement par la db et économise de la bande passante et du temps.

nosql/up_and_running_with_nosql_databases/reducing_data.txt · Last modified: 2016/06/12 00:16 by leo