美文网首页
mongodb学习_and_使用mapreduce聚合

mongodb学习_and_使用mapreduce聚合

作者: 一只羊槑 | 来源:发表于2018-11-28 16:29 被阅读0次

一:往数据库里插入数据

先生成一些简单的数据

from pymongoimport MongoClient

from randomimport randint

import datetime

client = MongoClient('localhost',27017)

db = client.get_database('229_taobao')

order = db.order_info

status = ['A','B','C']

cust_id = ['A123','B123','C123']

price = [500,200,250,300]

sku = ['mmm','nnn']

for iin range(1,100):

    items = []

    item_count =randint(2,6)

    for nin range(item_count):

        items.append({"sku":sku[randint(0,1)],"qty":randint(1,10),"price":randint(0,5)})

    new = {

    "status":status[randint(0,2)],

    "cust_id":cust_id[randint(0,2)],

    "price":price[randint(0,3)],

    "ord_date":datetime.datetime.utcnow(),

    "items":items

}

print new

order.insert_one(new)

print i

print order.estimated_document_count()


二:进入数据库进行mapreduce操作

   查看数据类型

(1) 查询每个cust_id 的所有price总和

map函数

var mapFunction1 = function() { 

               emit(this.cust_id, this.price);

              };

emit函数是把数据按照cust_id和price进行分组,可以将参数传给reduce函数

reduce函数

var reduceFunction1 = function(keyCustId, valuesPrices) {

            return Array.sum(valuesPrices);

      };


执行mapreduce函数并把结果输入map_reduce_example中

db.order_info.mapReduce( mapFunction1, reduceFunction1, { out: "map_reduce_example" } )


查询输出的结果

(2)计算所有items 的平均库存

  map函数

var mapFunction2 = function() { 

for (var idx = 0; idx < this.items.length; idx++) {

             var key = this.items[idx].sku; 

             var value = { count: 1, qty: this.items[idx].qty }; 

            emit(key, value);

 }

 };


reduce函数

var reduceFunction2 = function(keySKU, countObjVals) { 

    reducedVal = { count: 0, qty: 0 }; 

    for (var idx = 0; idx < countObjVals.length; idx++) { 

        reducedVal.count += countObjVals[idx].count; 

        reducedVal.qty += countObjVals[idx].qty;

 } 

    return reducedVal; 

};


finalize函数

var finalizeFunction2 = function (key, reducedVal) { 

    reducedVal.avg = reducedVal.qty/reducedVal.count; 

    return reducedVal;

 };


执行mapreduce函数并把结果输入map_reduce_example中

db.order_info.mapReduce( mapFunction2, reduceFunction2, { out: { merge: "map_reduce_example" }, finalize: finalizeFunction2 } )


查询输出结果

通过此实验可以看出,mapreduce比aggregate会更灵活

相关文章

  • mongodb学习_and_使用mapreduce聚合

    一:往数据库里插入数据 先生成一些简单的数据 from pymongoimport MongoClientfrom...

  • mongodb聚合

    如果需要对数据进行分析并加以利用,那么可以使用mongodb提供的聚合框架和聚合命令,也可以结合mapreduce...

  • MongoDB MapReduce 聚合操作

    MongoDB的聚合操作主要是对数据的批量处理。一般都是将记录按条件分组之后进行一系列求最大值,最小值,平均值的简...

  • mongodb的聚合

    mongodb的聚合 aggregate() 方法 MongoDB中聚合的方法使用aggregate() 语法 a...

  • MongoDB基础之分组聚合函数讲解

    MongoDB 中主要有三个函数: group:分组统计 aggregate:简单聚合 mapReduce:强大统...

  • MongoDB mapreduce 使用

    MapReduce介绍 MongoDB 中的MapReduce 使用JavaScript来作为查询语言,因此能表达...

  • MongoDB aggregate,mapreduce,聚合命令

    在mongodb中想要完成聚合操作,可以使用以下三种方式;但是很多时候这三个真是傻傻分不清楚,本文是来总结以下三种...

  • 23.mongodb的聚合操作

    mongodb的聚合操作 学习目标 了解 mongodb的聚合原理 掌握 mongdb的管道命令 掌握 mongd...

  • mongodb3 聚合之MapReduce

    mongodb3的MapReduce命令 如此庞大的命令,看似吓人。其实只有mapFunction和reduceF...

  • 学习MongoDB(聚合)

    aggregate() MongoDB中聚合的方法使用aggregate()。aggregate() 方法的基本语...

网友评论

      本文标题:mongodb学习_and_使用mapreduce聚合

      本文链接:https://www.haomeiwen.com/subject/dbnaqqtx.html