sách gpt4 ai đã đi

MongoDB——聚合操作之MapReduce

In lại 作者:知者 更新时间:2024-03-13 01:32:41 hai mươi bốn 4
mua khóa gpt4 Nike

一、MapReduce的概述

  • MapReduce操作将大量的数据处理工作拆分成多个线程并行处理,然后将结果合并在一起。MongoDB提供的Map-Reduce非常灵活,对于大规模数据分析也相当实用。

二、MapReduce的阶段

  • MapReduce具有两个阶段:
    (1)、将具有相同Key的文档数据整合在一起的map阶段;
    (2)、组合map操作的结果进行统计输出的reduce阶段。

三、MapReduce的基本语法

  • MapReduce语法格式
db.collection.mapReduce( function() {emit(key,value);}, //map 函数 function(key,values) {return reduceFunction}, //reduce 函数 { out: , query: , sort: , limit: , finalize: , scope: , jsMode: , verbose: , bypassDocumentValidation:  } )
  • MapReduce语法解释
chức năng 解释
map 将数据拆分成键值对,交给reduce函数
reduce 根据键将值做统计运算
ngoài 可选,将结果汇入指定表
quey 可选筛选数据的条件,筛选的数据送入map
sort 排序完后,送入map
limit 限制送入map的文档数
finalize 可选,修改reduce的结果后进行输出
scope 可选,指定map、reduce、finalize的全局变量
jsMode 可选,默认false。在mapreduce过程中是否将数 据转换成bson格式。
verbose 可选,是否在结果中显示时间,默认false
bypassDocmentValidation 可选,是否略过数据校验
  • MapReduce图解

四、MapReduce示例

4.1、 数据准备

  • 准备数据集,执行脚本
var tags = ["nosql","mongodb","document","developer","popular"]; var types = ["technology","sociality","travel","novel","literature"]; var books=[]; for(var i=0;i<50;i++){ var typeIdx = Math.floor(Math.random()*types.length); var tagIdx = Math.floor(Math.random()*tags.length); var tagIdx2 = Math.floor(Math.random()*tags.length); var favCount = Math.floor(Math.random()*100); var username = "xx00"+Math.floor(Math.random()*10); var age = 20 + Math.floor(Math.random()*15); var book = { title: "book-"+i, type: types[typeIdx], tag: [tags[tagIdx],tags[tagIdx2]], favCount: favCount, author: {name:username,age:age} }; books.push(book) } db.books1.insertMany(books);

4.2、 MapReduce示例

  • 统计type为travel的不同作者的books文档收藏数
db.books1.mapReduce( function(){emit(this.author.name,this.favCount)}, function(key,values){return Array.sum(values)}, { query:{type:"travel"}, out: "books_favCount" } )

  • 由于结果输出到了books_favCount中,所以需要去books_favCount中查看结果
> db.books_favCount.find()

hai mươi bốn 4 0
Bài viết được đề xuất: 一键清理Maven失效依赖-脚本+软件
Bài viết được đề xuất: element如何修改原样式及无法修改原样式等问题
Bài viết được đề xuất: springboot:整合fastdfs
Bài viết được đề xuất: JavaScript ES6
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com