聚合( Aggregation )为集合文档数据提供各种处理数据方法,并返回计算结果。MongoDB 提供了3 种方式来执行聚合命令:聚合管道方法、map-reduce 方法和单一目标聚合方法。
创新互联服务紧随时代发展步伐,进行技术革新和技术进步,经过十多年的发展和积累,已经汇集了一批资深网站策划师、设计师、专业的网站实施团队以及高素质售后服务人员,并且完全形成了一套成熟的业务流程,能够完全依照客户要求对网站进行成都网站设计、网站建设、建设、维护、更新和改版,实现客户网站对外宣传展示的首要目的,并为客户企业品牌互联网化提供全面的解决方案。1.聚合管道方法
聚合管道方法又可以直接理解为合计流水线法,就是把集合里若干含数值型的文档记录,其键对应的值进行各种分类统计。该方法支持分片集合操作。
语法: db.collection_name.aggregate(
[{$match: {<field>}},//统计查找条件
{$group:{<fieldl >,< field2 >}}
//fieldl 为分类字段; field2 为含各种统计操作符的数值型字段,如$sum、$avg、$min、$max、$push、$addToSet、$first、$last操作符
db.Sale_detail.aggregate( [ { $match: {ok : false} //查找条件,与find()的查找条件使用方法一样 }, { $group: { _id: "$goodsid", total: {$sum: "$amount"} //按goodsid分类统计amount字段的总数量 } } ] )
_id :"$goodsid" ,goodsid为分类字段名,_id为必须指定唯一性字段,不能改为其他名称的字段;total为统计结果字段名,可以是任意的符合起名规则的新名称。$sum为求和操作符号, $amount为求和字段,必须加上双引号。
2. map-reduce方法
语法: db.collection_name. mapreduce(
function() {emit( <this.field1>,<this.field2>)},
function(key, value){return array.sum(values)},
{query: {<field>} ,out:<"resultname">}
命令说明:
function(){emit(<this.field1>, <this.field2>)},把集合对应的字段<field1><field2>进行map(影射)操作。
把自field1值和求得值连同out:<"resultname">一起返回。
query:{<field>}在集合里查询符合<field>条件的文档。
该方式进行聚合运算,效率较聚合管道方式要低,而且使用更复杂。
3. 单一目标聚合方法
该方法下,目前有两种聚合操作功能:db.collection_name.count()和db.collection_name.distinct()。
(1)语法:db.collection_name.count(query, options)
命令说明:统计集合里符合查询条件的文档数量, query 为查询条件, option 参数详细说明如表
统计符合条件的记录数
db.Sale_detail.count({ok: false})
从第二条开始统计符合条件的记录数
db.Sale_detail.count({ok: false}, {skip: 1})
统计指定键的不同值并返回不同值
db.Sale_detail.distinct("goodsid")
单一目标聚合方法,可以直接在find()后加点使用。
如goodsdb.Sale_detail.find({ok:false}).count()
goodsdb.Sale_detail.find({ok:false}).count().skip(1)
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
新闻名称:聚合的方法介绍-创新互联
当前URL:https://www.cdcxhl.com/article38/iphsp.html
成都网站建设公司_创新互联,为您提供全网营销推广、定制网站、静态网站、网站策划、Google、关键词优化
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联