北京快三开奖

  • <tr id="U9YkSO"><strong id="U9YkSO"></strong><small id="U9YkSO"></small><button id="U9YkSO"></button><li id="U9YkSO"><noscript id="U9YkSO"><big id="U9YkSO"></big><dt id="U9YkSO"></dt></noscript></li></tr><ol id="U9YkSO"><option id="U9YkSO"><table id="U9YkSO"><blockquote id="U9YkSO"><tbody id="U9YkSO"></tbody></blockquote></table></option></ol><u id="U9YkSO"></u><kbd id="U9YkSO"><kbd id="U9YkSO"></kbd></kbd>

    <code id="U9YkSO"><strong id="U9YkSO"></strong></code>

    <fieldset id="U9YkSO"></fieldset>
          <span id="U9YkSO"></span>

              <ins id="U9YkSO"></ins>
              <acronym id="U9YkSO"><em id="U9YkSO"></em><td id="U9YkSO"><div id="U9YkSO"></div></td></acronym><address id="U9YkSO"><big id="U9YkSO"><big id="U9YkSO"></big><legend id="U9YkSO"></legend></big></address>

              <i id="U9YkSO"><div id="U9YkSO"><ins id="U9YkSO"></ins></div></i>
              <i id="U9YkSO"></i>
            1. <dl id="U9YkSO"></dl>
              1. <blockquote id="U9YkSO"><q id="U9YkSO"><noscript id="U9YkSO"></noscript><dt id="U9YkSO"></dt></q></blockquote><noframes id="U9YkSO"><i id="U9YkSO"></i>
                企业空间 推销商城 存储论坛
                北京快三开奖全闪存阵列 IBM云盘算 Acronis 安克诺斯 安腾普 腾保数据
                首页 > 数据库 > MongoDB教程 > 注释

                MongoDB中弱小的聚合东西

                2013-03-15 00:00泉源:中国存储网
                导读:1.countcount前往聚集中的文档数目db.refactor.count()不论聚集有多大,都能很快的前往文档数目.可以通报盘问,MongoDB管帐算盘问后果的数目db.refactor.count({"username":"refactor"})但是增

                1.count

                count前往聚集中的文档数目

                1. db.refactor.count() 

                  不论聚集有多大,都能很快的前往文档数目.

                  可以通报盘问,MongoDB管帐算盘问后果的数目

                  1. db.refactor.count({"username":"refactor"}) 

                    但是添加盘问条件会使count变慢.

                    2.distinct

                    distinct用来找出给定键的一切差别值.运用时必需指定聚集和键.

                    如:

                    1. db.runCommand({"distinct":"refactor","key":"username"}) 

                      MongoDB中弱小的聚合东西

                      3.group

                      group先选定分组所根据的键,MongoDB将会将聚集根据选定键值的差别分红多少组.然后可以经过聚合每一组内的文档,

                      发生一个后果文档.

                      如:

                      1. db.runCommand( 
                      2. "group"
                      3. "ns":"refactor" "key":{"username":true}, 
                      4. "initial":{"count":0},  "$reduce":function(doc,prev) 
                      5. prev.count++; 
                      6. },  "condition":{"age":{"$gt":40}} 
                      7.  "ns":"refactor",

                        指定要停止分组的聚集
                            "key":{"username":true},

                        指定文档分组的根据,这里是username键,一切username键的值相称的被分别到一组,true为前往键username的值
                            "initial":{"count":0},

                        每一组reduce函数挪用的初始个数.每一组的一切成员都市运用这个累加器.
                            "$reduce":function(doc,prev){...}

                        每个文档都对应的挪用一次.零碎会通报两个参数:以后文档和累加器文档.

                        1. "condition":{"age":{"$gt":40}} 

                          这个age的值大于40的条件

                          4.运用完成器

                          完成器用于精简从数据库传到用户的数据.group下令的输入肯定要能放在单个数据库相应中.

                          "finalize"附带一个函数,在数组后果通报到客户端之前被挪用一次.

                          1. db.runCommand( 
                          2. "group"
                          3. "ns":"refactor" "key":{"username":true}, 
                          4. "initial":{"count":0},  "$reduce":function(doc,prev) 
                          5. prev.count++; 
                          6. },  "finalize":function(doc) 
                          7. doc.num=doc.count
                          8. delete doc.count
                          9. finalize能修正通报的参数也能前往新值.

                            5.将数组作为键运用

                            有些时分分组所根据的条件很庞大,不只是一个键.比方要运用group盘算每个种别有多篇博客文章.由于有许多作者,

                            给文章分类时能够不纪律的运用了巨细写.以是,假如要是按种别名来分组,最初"MongoDB"和"mongodb"便是差别的组.

                            为了消弭这种巨细写的影响,就要界说一个函数来确定文档所根据的键.

                            界说分组要用到$keyf

                            1. db.runCommand(   { 
                            2.   "group"    { 
                            3.     "ns":"refactor"     "$keyf":function(doc){return {"username":doc.username.toLowerCase()}}, 
                            4.     "initial":{"count":0},      "$reduce":function(doc,prev) 
                            5.        {          prev.count++; 
                            6.        }     } 
                            7.  } 

                              6.MapReduce

                              count,distinct,group能做的事变MapReduce都能做.它是一个可以轻松并行化到多个效劳器的聚合办法.它会

                              拆分题目,再将各个局部发送到差别呆板上,让每台呆板完成一局部.当一切呆板都完成时分,再把后果聚集起来构成

                              终极完好的后果.

                              MapReduce需求几个步调:

                              1.映射,将操纵映射到聚集中的每个文档.这个操纵要么什么都不做,要么 发生一个键和n个值.

                              2.洗牌,依照键分组,并将发生的键值构成列表放到对应键中.

                              3.化简,把列表中的值 化简 成一个单值,这个值被前往.

                              4.重新洗牌,直到每个键的列表只要一个值为止,这个值便是终极后果.

                              MapReduce的速率比group慢,group也很慢.在使用顺序中,最好不要用MapReduce,可以在背景运转MapReduce

                              创立一个保管后果的聚集,可以对这个聚集停止及时盘问.

                              找出聚集中的一切键

                              MongoDB没有形式,以是并不知晓每个文档有几多个键.通常找到聚集的一切键的做好方法是用MapReduce.

                              在映射阶段,想失掉文档中的每个键.map函数运用emit 前往要处置的值.emit会给MapReduce一个键和一个值.

                              这里用emit将文档某个键的记数(count)前往({count:1}).我们为每个键独自记数,以是为文档中的每一个键挪用一次emit,

                              this是以后文档的援用:

                              1. map=function(){  for(var key in this) 
                              2. emit(key,{count:1}) 
                              3. }; 

                                如许前往了许很多多的{count:1}文档,每一个都与聚集中的一个键相干.这种有一个或多个{count:1}文档构成的数组,

                                会通报给reduce函数.reduce函数有两个参数,一个是key,也便是emit前往的第一个值,另一个参数是数组,由一个或许多个

                                对应键的{count:1}文档构成.

                                1. reduce=function(key,emits){  total=0; 
                                2. for(var i in emits){  total+=emits[i].count
                                3. return {count:total}; 
                                4. reduce要能被重复被挪用,不管是映射关键照旧前一个化简关键.reduce前往的文档必需能作为reduce的

                                  第二个参数的一个元素.如x键映射到了3个文档{"count":1,id:1},{"count":1,id:2},{"count":1,id:3}

                                  此中id键用于区别.MongoDB能够如许挪用reduce:

                                  1. >r1=reduce("x",[{"count":1,id:1},{"count":1,id:2}])  {count:2} 
                                  2. >r2=reduce("x",[{"count":1,id:3}])  {count:1} 
                                  3. >reduce("x",[r1,r2])  {count:3} 

                                    reduce应该能处置emit文档和其他reduce后果的种种聚集.

                                    如:

                                    1. mr=db.runCommand( 
                                    2. "mapreduce":"refactor" "map":map, 
                                    3. "reduce":reduce,  "out":{inline:1} 
                                    4. 或:

                                      db.refactor.mapReduce(map,reduce,{out:{inline:1}})

                                      MongoDB中弱小的聚合东西

                                      "timeMillis" : 5,//操纵破费的工夫
                                      "counts" : {
                                      "input" : 10,//发往到map函数的文档个数
                                      "emit" : 40,//在map函数中emit被挪用的次数
                                      "reduce" : 4,//在map函数中reduce被挪用的次数
                                      "output" : 4//后果聚集中创立的文档数目.
                                      },

                                      1.mapreduce是依据map函数里挪用的emit函数的第一个参数来停止分组的

                                      2.仅当依据分组键分组后一个键婚配多个文档,才会将key和文档聚集交由reduce函数处置

                                      留意MongoDB 1.8版本以上,必需指明 out 参数

                                      不然会报如下错误:

                                      "assertion" : "'out' has to be a string or an object",
                                      "assertionCode" : 13606,

                                      MapReduce中的其他键

                                      mapreduce,map,reduce这三个键是必需的,MapReduce下令另有其他的可选键

                                      finalize:函数

                                      将reduce的后果发送给这个键,这是处置进程的最初一步

                                      keeptemp:布尔值

                                      衔接封闭时,暂时后果能否保管

                                      output:字符串

                                      后果聚集的名字,设定该项则隐含着keeptemp:true

                                      query:文档

                                      会在发往map函数前,先用指定条件过滤文档

                                      sort:文档

                                      会在发往map函数前先给文档排序

                                      limit:整数

                                      发往map函数文档的最大数目

                                      scope:文档

                                      javascript代码中要用到的变量

                                      verbose:布尔值

                                      能否发生愈加信息的效劳器日记 

                持续阅读
                要害词 :
                MongoDB引见
                中国存储网声明:此文观念不代表本站态度,若有版权疑问请联络我们。
                相干阅读
                • 比照MySQL,你终究在什么时分更需求MongoDB

                  NoSQL曾经盛行了很长一段工夫,那么终究是什么场景下你才更需求用到这些“新兴事物”,就比方MongoDB?上面是一些总结:你希冀一个更高的写负载默许状况下,比照事件平安,MongoDB更存眷高的拔出速率。假如你需求加载少量低价

                • MongoDB 办理东西 Robomongo

                  [荐]开源ETL东西 KettleKettle是一款外洋开源的etl东西,纯java编写,绿色无需装置,数据抽取高效波动(数据…[荐]MySQL WorkbenchMySQL Workbench是一款专为MySQL设计的ER/数据库建

                • 关于MongoDB你需求晓得的几件事

                  Henrique Lobo Weissmann是一位来自于巴西的软件开辟者,他是itexto公司的结合开创人,这是一家征询公司。克日,Henrique在博客上撰文谈到了关于MongoDB的一些内容,此中有些观念值得我们,特殊是正在和计划运用MongoDB的开辟

                • MongoDB 2.2版本公布 并发功能加强

                  我们可以看到,广受诟病的全局锁曾经在这一版中被拿失,取而代之的是DB级另外锁,并且collection 级另外锁也不远了。上面就看看2.2 版本的几个新功用吧:1.并发功能加强如下面所说,MongoDB 2.2版本中不再有高出于整个daemon上的全局锁,而是

                • 浅谈MongoDB中几种差别盘问办法

                  1.findMongoDB运用find来停止盘问.盘问便是前往一个聚集中文档的子集,子聚集的范畴从0个文档到整个聚集.find的第一个参数决议了要前往哪些文档.其方式也是一个文档,阐明要盘问的细节.空的盘问文档{}会婚配聚集的全部内容.要是不指定盘问文档,默许

                • 烽烟通讯精美表态数据中央规范峰会

                  烽烟通讯携“FitDC数据中央处理方案及网络动力根底设备”精美表态。

                • 2020国际数据中央及云盘算财产展

                  2020.12.03-05〡上海.上海新国际博览中央 CDCE2020展前剧透 构建5G期间新基建 12月3-5日上海数据中央行业全财产展现 12月3日-5日,由数据中央节能技能委员会及雅式展览效劳

                • 天下最小存储设置装备摆设降生,单元面积容量超闪存100倍!

                  工程师们发明了有史以来最小的影象存储设置装备摆设之一,由一种二维资料制成,横截面面积只要一平方纳米。

                • 天下互联网大会召开,CDS首云多款产物公布赋能数字将来

                  现在云效劳器中主频最高型号,不只高于友商同类产物,且在中心功用上可以完满无缝兼容首云实例的一切功用。

                • 打造数据存储的千里长堤,西部数据力推创新存储架构

                  数据存储的使用场景正在阅历从终端、边沿到云数据中央中心的疾速演进,数据的特点是大数据、快数据的使用需求并存。

                产物引荐
                头条阅读
                栏目热门

                Copyright @ 2006-2019 ChinaStor.COM 版权一切 京ICP备14047533号

                中国存储网

                存储第一站,存储流派,存储在线交换平台