MongoDB MapReduce 使用(一)

Ubuntu 18.04 Postfix 部署实战:本地邮件通知系统搭建与排障 邮件传输代理(MTA)是Linux系统告警、日志归档和自动化通知的核心基础设施;Postfix凭借轻量、安全、可审计等特性,成为Ubuntu环境下首选MTA。其工作原理涉及DNS解析、TLS加密协商、本地用户路由及队列状态机管理;技术价值在于不依赖云服务即可实现高可靠内部通知,规避第三方限频风险。典型应用场景包括cron任务失败告警、fail2ban封禁通知、CI/CD构建结果推送等。本文聚焦Ubuntu 18.04这一广泛使用的长期维护版本,深入解析debconf预设、systemd-resolved兼容 阅读详情
一  Map/Reduce简介
   
       MapReduce 是目前最流行和被普遍研究的海量数据处理方法。它是Google公司的核心模型,用于大规模数据集(大于1TB)的并行计算。“映射(Map)”与“化简(Reduce)”的概念是它们的主要思想,都是从函数式编程语言借来的。MapReduce将负责的运行于大规模集群上的并行计算过程高度地抽象为两个函数(Map和Reduce),利用一个输入<key,value>集合来产生一个输出地<key,value>对集合,极大地方便了编程地人员,在不了解分布式并行编程地情况下,它们也能将自己地程序运行在分布式系统上。

      MapReduce在执行时先指定一个Map(映射)函数,把输入<key,value>对映射成一组新的<key,value>对,经过一定处理后交给 Reduce,Reduce对相同key下的所有value处理后再输出<key,value>对作为最终的结果。
    
    MapReduce计算模型非常适合在大量计算机组成的大规模集群上并行运行。在采用Map/Reduce模式的分布式系统上,每一个Map任务和每一个Reduce任务均可以同时运行于一个单独的计算节点上,可想而知其处理效率是很高的。

二 Map/Reduce过程

      MongoDB中的Map/Reduce对于批量处理数据进行聚合操作是非常有用的。在思想上它跟Hadoop一样,从一个单一集合中输入数据,然后将结果输出到一个集合中。通常在使用类似SQL中Group By操作时,Map/Reduce会是一个好的工具。
  
    看下面一个实例:


   a.在orders集合上进行MapReduce操作,首先使用query进行“过滤”操作,选择出 status为’A’的所有文档。
   b.在选择后的每个文档上执行map操作,在map操作的时候将当前文档的this.cust_id,this.amount分别作为键值发射出去,经过map操作后,相同键的文档的值被放到一起组成一个数组。
   c.如果一个键有多个值的话,进行reduce的操作,在进行reduce 操作的时候将所有的值进行累加
如果一个健只有一个值的话就直接输出到结果集合
   d.Reduce完后将结果输出到预先定义好的结果集合中,即order_totals集合。

三 Map/Reduce 指令

     Map/Rudece是通过数据库指令调用的,指令原型如下:
db.runCommand(
               {
                 mapReduce: <collection]]
>
,
                 map: <function]]
>
,
                 reduce: <function]]
>
,
                 out: <output]]
>
,
                 query: <document]]
>
,
                 sort: <document]]
>
,
                 limit: <number]]
>
,
                 finalize: <function]]
>
,
                 scope: <document]]
>
,
                 jsMode: <boolean]]
>
,
                 verbose: <boolean]]
>

               } )             

参数说明:

       mapReduce:要执行Map/Reduce集合的名字
       map:map 函数     (下面会详细介绍)
       reduce:reduce函数(下面会详细介绍)
       out:存放结果的集合 (下面会详细介绍)
       query:设置查询条件   <可选>
       sort: 按某个键来排序 <可选>
       limit:指明从集合检索文档个数的最大值 <可选>
       finalize:对reduce结果做进一步处理  <可选>
       scope:指明通过map/reduce/finalize可以访问到的变量 <可选>
       jsMode:指明Map/Reduce执行过程中文档保持JSON状态   <可选>
       verbose:提供关于任务执行的统计数据  <可选>

例如:
var mapFunction = function() { ... };
var reduceFunction = function(key, values) { ... };

db.runCommand(
               {
                 mapReduce: 'orders',
                 map: mapFunction,
                 reduce: reduceFunction,
                 out: { merge: 'map_reduce_results', db: 'test' },
                 query: { ord_date: { $gt: new Date('01/01/2012') } }
               } )

四 参数详细说明

   对Map/Reduce指令中的几个重要参数做一下详细的说明,以便我们能够写出正确的Map/Reduce程序。主要介绍一下Map、Reduce和Out三个参数使用,它们也是必选的参数。

  1.Map函数

     Map函数通过变量this来检验当前考察的对象。一个Map函数会通过任意多次函数调用emit(key,value)来将数据送入reducer中。大多数情况下,对于每个文档都只会发送一次,但是在有些情况下需要发送多次,例如下面这个Map程序,整个文档被调用的次数取决于items数组中元素的个数.
function() {
    this.items.forEach(function(item){ emit(item.sku, 1); }); }
     有些情况下也会发送0次,例如:
function() {
    if (this.status == 'A')
        emit(this.cust_id, 1);
}

     每一次发送的数据都被限制到最大文档大小的50%(比如MongoDB1.6.x中是4MB, MngoDB1.8.x中是8MB)。

  2.Reduce函数
 
       当运行Map/Reduce时,Reduce函数将收到一个发送值构成的数组并且要把它们简化到单个值。因为针对一个键值的Reduce函数可能会被调用到好多次,Reduce函数返回的对象结构要与Map函数发送的值的结构必须时完全相同。我们可以用一个简单的例子来说明这一情况。

      假设对一个代表用户评价的文档构成的集合进行迭代,典型的文档内容如下:
    {
            name:”jones”,
            likes:20,
            text:”hello world!”
      }
      我们想利用Map/Reduce来统计每个用户的评论数,并且计算全部用户评价中“like”的总数。为了达到这个目的,首先写一个如下的Map函数:
      func () {
            emit( this.username, {count:1,likes:this.likes});
       }
      这个函数实际上指明了要以username来分组,并且针对count和likes字段进行聚合运算。当Map/Reduce实际运行的时候,一个由用户构成的数组将发送给Reduce函数,这个就是为什么Reduce函数总是用来处理数组。下面就是一个Reduce函数的例子。

    func(key,values) {
         var result =  {count:0, likes:0}
         values.forEach(function(value))  {
         result.count += value.count;
         result.likes  += value.likes;
    });
     return result;
   }

注意:
       a.结果文档和Map函数所传送的数据拥有相同的结构。
       即:reduce(key, [ C, reduce(key, [ A, B ]) ] ) == reduce( key, [ C, A, B ] )
      这是非常重要的,因为当Reduce函数作用于某个key值时,它并不保证会对这个key值(这里是username)的每一个value进行操作。事实上,Reduce函数不得不运行多次。比如,当处理评论集合时,Map函数可能遇到来自”jones”的10条评论,它会把这些评论传送给Reduce函数,得到如下聚集结果:
     {count:10,likes:247}
       然后,Map函数又遇到一个来自”jones”的评论,此时,这值必须被重新考虑来修改聚合结果。如果遇到新的评论为:{count:1,likes:5}
      
      那么reduce函数将被这样调用:
      reduce{“jones”,[{count:10,likes:247},{count:1,likes:5}]}

      最后的结果将会是上面两个值的结合:{count:11,likes:252}

      只有你理解对一个key值Reduce函数可能被多次调用,就容易理解为什么这个函数必须饭后一个和Map函数发送的值具有相同的结构了。

  b.数组中元素的顺序不能影响结果的输出
     reduce( key, [ A, B ] ) == reduce( key, [ B, A ] )

  3.Out函数

        在MongoDB1.8之前的版本,如果你没有指定out的值,那么结果将会被放到一个临时集合中,集合的名字在输出指令中指定,否则,你可以指定一个集合的名字作为out的选项,而结果将会被存储到你指定的集合中。
      
      对于MongoDB1.8以及以后的版本,输出选项改变了。Map/Reduce 不再产生临时集合,你必须为out指定一个值,设置out指令如下:

  默认输出第一个集合中,如果该集合不存在的话,会自动的创建

out: <collectionName]]
>


 除此之外,也可以加一些选项,这只适用于集合已经存在的情况

out: { <action>: <collectionName]]
>

         [, db: <dbName]]
>
]
         [, sharded: <boolean]]
>
 ]
         [, nonAtomic: <boolean]]
>
 ] }


a.参数Action说明:
       Action可以为 replace(默认)、merge、reduce
       {replace:”collectionName"}:输出结果将被插入到一个集合中,并且会自动替换掉现有的同名集合。该选项为默认的。
       {merge:”collectionName"}:这个选项将会把新的数据连接到旧的输出结合中。换句话说,如果在结果集和旧集合中存在相同键值,那么新的键将会被覆盖掉。
       {reduce:”collectionName"}:如果具有某个键值的文档同时存在于结果集和旧集合中,那么一个Reduce操作(利用特定的reduce函数)将作用于这个两个值,并且结果将会被写到输出集合中。如果指定了finalize函数,那么当Reduce结束后它将被执行。

b. 参数db: 指明接收输出结果的数据库名称
      out:{replace:”collectionName",db:”otherDB"}  

c.  参数shard:   {shared:true}:适用于MongoDB1.9及以上的版本。如果设置为true,并且将输出模式设置为输出得到集合中,那么输出的结合的每个文档就将用_id字符进行切分。

d. 参数 inlne: {inline:1}借助于该选项,将不会创建集合,并且整个Map/Reduce的操作将会在内存中进行。同样,Map/Reduce的结果将会被返回到结果对象中。注意,这个选项只有在结果集的单个文档大小在16MB限制范围内时才有效。
 db.users.mapReduce(map,reduce,{out:{inline:1}});

  
4 Finalize函数

        finalize函数可能会在Reduce函数结束之后运行,这个函数是可选的,对于很多Map/Reduce任务来说不是必需的。finalize函数接收一个key和一个value,返回一个最终的value.

       function finalize(key,value) -> final_value

       针对一个对象你的Reduce函数可能被调用了多次。当最后只需针对一个对象进行一次操作时可以使用finalize函数,比如计算平均值。

  5.jsMode标识
      
       对于MongoDB2.0及以上的版本,通常Map/Reduce的执行遵循下面两个步骤:
       a.从BSON转化为JSON,执行Map过程,将JSON转化为BOSN
       b.从BSON转化为JSON,执行Reduce过程,将JSON转化为BSON
     
      因此,需要多次转化格式,但是可以利用临时集合在Map阶段处理很大的数据集。为了节省时间,可以利用{jsMode:ture}使Map/Reduce的执行保持在JSON状态。遵循如下两个步骤:
       a.从BSON转化为JSON,执行Map过程
       b.执行Reduce过程,从 JSON转化为BSON

     这样,执行时间可以大大减小,但需要注意,jsMode 受到JSON堆大小和独立主键最大500KB的限制。因此,对于较大的任务jsMode并不适用,在这种情况下会转变为通常的模式。

 
四 总结

      Map-Reduce操作将一个单一集合内文档作为输入,在进行map函数所定义的操作的时候,可以进行任意的排序或者limit文档个数的操作。mapReduce操作 返回的结果可以是一条文档,也可以将其结果写到一个集合里面。  也可以以inline方式返回(结果文档必须要小于BSON文档的大小限制,当前是16M) 如果写到一个集合中,我们就可以在整个集合上进行进一步的聚合操作。

    下一节,将详细介绍MapReduce的使用。



MapReduce代码编写--求性别人数、求总分、关联、map端的过滤、combiner预聚合 主要基于数据 #students.txt /* 1500100001,施笑槐,22,女,文科六班 1500100002,吕金鹏,24,男,文科六班 1500100003,单乐蕊,22,女,理科六班 1500100004,葛德曜,24,男,理科三班 1500100005,宣谷芹,22,女,理科五班 1500100006,边昂雄,21,男,理科二班 1500100007,尚孤风,23,女,文科六班 ... 阅读详情

相关推荐

LobeHub开源AI应用平台:从部署到定制的全栈实践指南

在现代AI应用开发领域,大语言模型(LLM)的集成与部署是核心技术挑战之一。其原理在于通过API或本地化部署,将预训练模型的强大能力封装为可调用的服务。这项技术的核心价值在于极大地降低了AI应用的开发门槛,使开发者能够快速构建智能对话、内容生成等场景的应用。随着模型即服务(MaaS)模式的普及,一个关键痛点是如何高效地管理多模型、设计友好的用户界面并实现功能扩展。这正是开源项目LobeHub所聚焦的领域,它通过提供可插拔的架构和配置驱动的低代码理念,解决了AI能力落地的“最后一公里”问题。本文将结合Dock

weixin_27210125的博客 754

(16)mongodb mapReduce分布式统计示例遇到的一个未解问题,求平均值不对,希望哪位大神给指点一下...

  mapReduce 的优势在于分布式,这一节记录一个分布式统计的示例,整个过程分为这几步:启动分布式服务、手动分片、导入数据、执行 mapReduce。下面单独说说这几步。 1、启动分布式服务   参考前面的第10节和第11节,不在重复说了。 2、手动分片:   sh.enableSharding('test');  用test库做分片   sh.shardCollecti...

weixin_30244889的博客 271

【计算机图形学】Pov-Ray画的垃圾小车

效果: 代码: #include "colors.inc" #include "metals.inc" #include "glass.inc" //相机 //这个位置车子刚好落在草地上了 camera { location direction z*1.5 right x*image_width/image_height look_at

lishichengyan的博客 1749

使用mongodb 的MapReduce功能笔记

MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(化简)",和他们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。 1.  先来一个看一个简单的例子,利用mongodb 的MapReduce功能进行分组统计。 数据表结构,用户的行为Record表,用户每个行为记录一条,利用MapReduce来统计每个用

kindy的开发工作室 631

CocosCreator视频播放黑屏?手把手教你封装VideoPlayer组件解决Web环境问题

本文针对Cocos Creator在Web环境下视频播放黑屏等常见问题,提供了一套工程化的VideoPlayer组件封装解决方案。文章深入剖析了浏览器自动播放策略、DOM样式隔离等核心挑战,并手把手教你实现一个健壮的管理器,涵盖兼容性处理、性能优化与内存管理,确保视频播放稳定流畅。

plum99的博客 598

提升RAG效果:为何 JSON 格式远胜 Markdown?

在构建强大的 RAG (检索增强生成) 系统时,文档解析是至关重要的第一步。它直接影响着后续的检索效率和生成质量。在众多文档格式中,JSON (JavaScript Object Notation) 格式正逐渐展现出其相对于传统 Markdown 格式的巨大优势。本文将深入探讨 JSON 在 RAG 系统文档解析中的卓越之处,并结合具体案例,让你理解为何 JSON 才是构建下一代智能应用的更优选择。RAG 系统的核心目标是让模型能够利用外部知识库,生成更精准、更贴合实际的答案。

simoncool23的博客 2718

MongoDB MapReduce 实战<1>

MongoDB属于Nosql数据库,自带MapReduce,正好符合项目某个需求,那么,还等什么,从实战角度来学习吧。

技术需要沉淀,需要碰撞。 1047

自动配胶机的PLC控制系统设计

我们根据自动配胶机的控制需求,编写了相应的PLC程序。PID温度控制算法的实现方面,我们采用了经典的PID控制算法,通过不断调整加热器的功率,实现对胶水混合温度的精确控制。在PLC程序中,我们编写了PID控制算法的程序模块,通过实时采集温度传感器的数据,计算温度偏差和偏差变化率,并根据PID控制算法计算出加热器的功率输出值,实现对温度的精确控制。在系统调试阶段,我们对自动配胶机的各个部分进行了详细的测试和调试,包括气路和液路的开关测试、传感器的精度测试、步进电机的位置和速度测试以及PLC程序的逻辑测试等。

lagougongzuoshi的博客 1227

php没有mapreduce,php 关于mongodb的mapreduce的问题

$mapFunc = <<function() {if (!this.summary) {return;}var summary = this.summary;if (summary.type || summary.sum) {var index = summary.type + '-' + summary.business;var data = {type: summary.type...

weixin_39870199的博客 85

Onnxruntime之YOLOP部署过程记录

魔改YoloP部署过程记录

如果想成为中心,那么就到中心去吧。 1924

基于FPGA的64点fft变换verilog开发

这精度的损失在10bits看来对最后的误差的影响是存在是不可忽略的。此后,在这思想基础上又开发了高基和分裂基等快速算法,随着数字技术的高速发展,1976年出现建立在数论和多项式理论基础上的维诺格勒傅里叶变换算法(WFTA)和素因子傅里叶变换算法。采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。

FPGA/MATLAB学习教程/源码/项目合作开发 1977

mongodb的mapreduce实现分组统计数量

分组:test db.runCommand( { mapreduce : "test", map : function() { var nameKey = this.name; kws.forEach(function(kw){ var key = kw.key; if(nameKey.indexOf(key) =...

tydldd 921

第二节_PySide6项目创建流程介绍、手把手教学打包EXE可执行文件

本文详细介绍了如何使用PySide6创建一个带UI界面的Python程序,并将其打包成exe可执行文件。首先,通过Pycharm创建项目,并使用PySide6-Designer工具设计UI界面,将生成的ui文件转换为Python代码。接着,编写主程序,加载UI界面并实现功能,如加载图片、设置图标等。最后,通过资源文件管理图片资源,并确保UI界面的更新能同步到主程序中。整个过程涵盖了项目创建、UI设计、代码编写及资源管理,适合初学者学习如何将Python程序打包为可执行文件。

su桥木的博客 2557

mongodb sum 操作

Mongodb 统计某个字段的和,可以使用聚合函数。 数据结构如下: &gt; db.message.findOne() { "_class" : "com.cyou.appwiki.bean.Message", "_id" : ObjectId("53997f80c451bf833288b882"), "content" : "power9li的回答2",

garyli 2014

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

mongodb group 有条件的过滤组合个数。

1.统计个数,这种方式比较快。 db.trace_2015_01_01.aggregate([{ $match : { _id:{ "$gt":3309432 } } },{$group : {_id : "$operate", num_tutorial : {$sum : 1}}}]); 2.这种方式是mapreduce的方式,很慢 db.trace_2015_01_01.group({

Terry - 专注外贸B2C 3921

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

MongoDB文档翻译-Map-Reduce

Map-ReduceMap-reduce是一种把大量数据变成有用的聚集结果的数据处理模式。对于map-reduce操作,MongoDB提供了mapReduce数据库命令。考虑以下map-reduce操作: 在该map-reduce操作中,MongoDB对每个输入文档(即集合中匹配查询条件的文档)应用map阶段。map函数产生键-值对。对于这些有多个值的键,MongoDB应用reduce阶段,收

chunyuan314的博客 567

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

MongoDB 如何对子文档分段统计

按指定的分段区间进行分组,统计各段内的数据量。如有成绩集合 scores,按成绩分段,分别统计语文、英文成绩各分数段的人数,相关的数据如下: 成绩分段划分为:[60, 70, 80, 90] 也就是按小于 60, 60—70, 70—80,80—90, 大于 90 分段(区间左闭右开)。 name age province subject zhou gao gao 24 guang xi [Chinese,80],[Math,84][English,84],[Ch.

Raqsoft 564

mongodb中mapreduce的使用以及使用pymongo调用mapreduce

先简单介绍一下map/reduce map函数:接受一个键值对(key-value pair),产生一组中间键值对。MapReduce框架会将map函数产生的中间键值对里键相同的值传递给一个reduce函数。 reduce函数:接受一个键,以及相关的一组值,将这组值进行合并产生一组规模更小的值(通常只有一个或零个值)。 mongodb直接调用mapreduce不是本文重点,因此引述网

Andos's House 4530

MongoDB中MapReduce使用

又是一年求职季,在这里,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考以下是部分内容截图“_id” : “曹雪芹”,“author” : “曹雪芹”,“books” : “红楼梦”,“_id” : “钱钟书”,“author” : “钱钟书”,“books” : “宋诗选注,–haha–,谈艺录”,

2401_85117728的博客 1056

一篇文章带你搞定 MongoDB 中 MapReduce 使用

玩过 Hadoop 的小伙伴对 MapReduce 应该不陌生,MapReduce 的强大且灵活,它可以将一个大问题分解为多个小问题,将各个小问题发送到不同的机器上去处理,所有的机器都完成计算后,再将计算结果合并为一个完整的解决方案,这就是所谓的分布式计算。此处我们就来看看 MongoDB 中 MapReduce 的使用。 文章目录一、mapReduce二、runCommand 实现 一、mapReduce MongoDB 中的 MapReduce 可以用来实现更复杂的聚合命令,使用 MapReduce 主

南淮北安的博客 3488

MongoDB 聚合操作之 MapReduce 使用

MongoDB Map Reduce 前面介绍了一些 MongoDB 的聚合操作,这里介绍下 MapReduce 的相关内容。 Map-Reduce 是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE)。 MongoDB 提供的 Map-Reduce 非常灵活,对于大规模数据分析也相当实用。 Map-Reduce 的解释 M...

Wayfreem的博客 1675

MongoDB教程(十八):MongoDB MapReduce

MongoDB 的 MapReduce 是一种强大的工具,用于处理大规模数据集并从中提取有价值的信息。MapReduce 的概念源自 Google 的论文,后来被 Hadoop 和其他大数据处理框架所采纳。在 MongoDB 中,MapReduce 提供了一种灵活的方式对集合中的数据进行聚合和分析。本文将深入探讨 MapReduce 的工作原理,并通过具体的案例代码来演示其使用方法。

菜鸟小码的博客 1369

MongoDB:MapReduce的使用

MongoDB:MapReduce的使用

拒绝熬夜啊的博客 1550

使用MongoDB的MapReduce

MapReduce是Google在2004年推出的一种软件框架,用于支持对计算机集群中的大数据集进行分布式计算。 您可以从此处阅读有关MapReduce的信息 。 MongoDB是用C ++编写的面向开源文档的NoSQL数据库系统。 您可以从此处阅读有关MongoDB的更多信息。 1.安装MangoDB。 请遵循此处提供的MongoDB官方文档中的说明。 就我而言,我遵循了OS X...

最佳 Java 编程 378

MongoDB中的MapReduce详解

MongoDB作为一种流行的NoSQL数据库,提供了多种数据处理和分析的方式,其中MapReduce是一种强大的工具,用于处理大规模数据集。在MongoDB中,MapReduce可以使用JavaScript编写的Map和Reduce函数来处理集合中的数据。例如,可以对每个文档生成一个键值对,键是某个字段的值,值是文档的计数。例如,可以将相同键的值加起来,计算总数。:MapReduce提供了强大的数据处理能力,用户可以根据需要自定义Map和Reduce函数,处理复杂的数据聚合和分析任务。

My_wife_QBL的博客 1415

MongoDB MapReduce 深入解析

在处理大规模数据集时,尤其是在MongoDB这样的NoSQL数据库中,我们常常会遇到需要对数据进行复杂查询和聚合操作的需求。例如,假设我们有一个包含用户购买记录的数据库集合,我们需要统计每个用户的总消费金额以及消费次数。这样的操作如果使用传统的查询方法可能会非常复杂,且效率低下。这时,MapReduce作为一种强大的数据处理工具,就能发挥其优势。MapReduce在MongoDB中扮演着至关重要的角色,它允许我们以分布式的方式处理数据,从而提高处理速度和效率。

我是Java程序员廖志伟,感谢朋友们的支持!不定期贡献一篇高品质、过万文字、图文并茂且附有视频解说、满载代码示例注释的良心之作,坚决杜绝粗制乱造。 896
上一篇: MongoDB Capped Collection 使用
下一篇: MongoDB MapReduce 使用(二)
张哲BJUT
博客等级 码龄15年 151粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值