MongoDB(6)数据聚合 & 管道操作

MongoDB聚合:分组统计$group的用法详解 MongoDB不像关系型数据库,普通的查询不支持汇总,要进行复杂的分组汇总,需要使用聚合管道,$group可以说是MongoDB聚合管道进行数据分析最常用的一个阶段。该阶段根据分组键值(组键)把文档分成若干组,每个唯一的键值对应一个文档。组键通常是一个或多个字段,也可以是表达式的结果。$group阶段输出的结果中,_id字段的值就是组键的值,输出文档中还可以包含汇总表达式的字段,汇总表达式的功能非常丰富,下面的列表会简单介绍,具体的使用方法可以参考详细说明。 阅读详情

MongoDB 入门专栏

http://blog.youkuaiyun.com/column/details/19681.html


管道操作


mongodb 的数据聚合过程通常会配合管道操作,mongodb 的管道操作概念类似于 LInux 中的管道概念,mongodb 的聚合管道将 mongodb 文档在一个管道处理完毕后将结果传递给下一个管道处理,管道操作是可以以此重复的;

mongodb 管道使用 aggregte() 方法,使用管道表达式表示一个管道过程,表达式是无状态的,只能计算当前聚合管道的文档,不能处理其他文档,以下是常用的几种管道操作表达式:

聚合操作使用 aggregate () 函数,该函数原型为:db.collection_name.aggregate(<opeation>)

其中 opeation 参数常用的表达式:
表达式说明
$project修改输入文档的结构,可以用于重命名、增加/删除域、创建计算结果、嵌套文档;
$match用于过滤数据,只输出符合条件的文档,$match 使用MongoDB的标准查询操作;
$limit用来限制MongoDB聚合管道返回的文档数;
$skip在聚合管道中跳过指定数量的文档,并返回余下的文档;
$count显示当前管道的文档数量
$size显示一个键(该键为数组类型)的数组长度;
$unwind将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值;
$group将集合中的文档分组,可用于统计结果;
$sort将输入文档排序后输出;
$geoNear输出接近某一地理位置的有序文档;


关于管道完整表达式列表的用法,参见: https://docs.mongodb.com/manual/reference/operator/aggregation-pipeline/

示 例使用:
以下为示例使用集合 blog 的文档结构:
 
{
   _id: ObjectId("5a88f21ac05302a3b998abb9"),
   title: 'MongoDB Overview', 
   description: 'MongoDB is no sql database',
   author: 'assad',
   url: 'http://blog.assad.artcile/1',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 100
},
{
   _id: ObjectId("5a88f278c05302a3b998abba"),
   title: 'NoSQL Overview', 
   description: 'No sql database is very fast',
   author: 'Tim',
   url: 'http://blog.assad.artcile/34',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 233
},
{
   _id: ObjectId("5a88f299c05302a3b998abbb"),
   title: 'SqlLite Overview', 
   description: 'SqlLite is no sql database',
   author: 'assad',
   url: 'http://blog.assad.artcile/213',
   tags: ['SqlLite', 'database', 'NoSQL'],
   likes: 666
}

示例:
 
# $project 示例:只显示 blog 集合的 title,author,likes 字段
 > db.blog.aggregate( 
 ...     [ {$project:{_id:0,title:1,author:1,likes:1}} ] 
 ... )
​
{ "author" : "assad", "likes" : 100, "title" : "article_title" }
{ "author" : "Tim", "likes" : 233, "title" : "article_title" }
{ "author" : "assad", "likes" : 666, "title" : "article_title" }
​
# $count 示例:显示 blog 集合中 likes>100, likes<500 的文档的数量
> db.blog.aggregate([
... { $match:{likes:{$gt:100,$lt:500}} },
... { $count:"result" }
... ])
{ "result" : 1 }
​
# 综合示例:显示 blog 集合中每一条文档的 tages 总数
> db.blog.aggregate([
...    { $project:{_id:0,title:1,tages_count:{$size:"$tags"}} } 
...])
​
{ "title" : "MongoDB Overview", "tages_count" : 3 }
{ "title" : "NoSQL Overview", "tages_count" : 3 }
{ "title" : "SqlLite Overview", "tages_count" : 3 }
​
# 综合示例:显示 blog 集合中 author="assad", likes>=100, likes<=800 的文档,按 likes 正序排序,只显示前 5 个文档,只显示 title,author,likes 字段
> db.blog.aggregate( [
...  { $project:{title:1,author:1,likes:1} },
...  { $match:{author:"assad",likes:{$gte:100,$lte:800}} },
...  { $limit:5 },
...  { $sort:{likes:1} }
... ]}
​
{ "_id" : ObjectId("5a88f21ac05302a3b998abb9"), "title" : "MongoDB Overview", "author" : "assad", "likes" : 100 }
{ "_id" : ObjectId("5a88f299c05302a3b998abbb"), "title" : "SqlLite Overview", "author" : "assad", "likes" : 666 }
​
# 综合示例:显示 blog 集合中 tags 键数组中各个值出现次数的统计
> db.blog.aggregate([
...    { $unwind:"$tags" }, 
...    { $group:{_id:"$tags",count:{$sum:1}}} 
... ])
​
{ "_id" : "SqlLite", "count" : 1 }
{ "_id" : "NoSQL", "count" : 3 }
{ "_id" : "database", "count" : 3 }
{ "_id" : "mongodb", "count" : 2 }


$group 分组表达式

在 aggregate() 方法中使用 $group 表达式进行分组操作,类似于 SQL 中的 group by 子句,$group 常用的聚合表达式如下:
表达式说明
$sum计算总和;
$avg计算平均值;
$max获取文档对应键值的最大值上限;
$min获取文档对应键值的最小值;
$first根据文档的排序获取第一个文档;
$last根据文档的排序获取最后一个文档;
$push在结果文档中插入一个数组;
$addToSet在结果文档中插入一个数组,但是不创建副本;

示例:
演示 $sum
 
# 显示每一个 author 各自的 likes 总数
> db.blog.aggregate(
...    [ {$group:{_id:"$author",likes_count:{$sum:"$likes"} }} ]
...)
​
{ "_id" : "Tim", "likes_count" : 233 }
{ "_id" : "assad", "likes_count" : 766 }
​
# 显示所有文档的 likes 总数
> db.blog.aggregate(
...    [ {$group:{_id:null, likes_count:{$sum:"$likes"} }} ]
...)
​
{ "_id" : null, "likes_count" : 999 }
演示 $avg
 
# 显示各个 author 的 likes 平均数
> db.blog.aggregate(
...    [ {$group:{_id:"$author",likes_avg:{$avg:"$likes"} }} ]
...)
​
{ "_id" : "Tim", "likes_avg" : 233 }
{ "_id" : "assad", "likes_avg" : 383 }
​
# 显示所有文档 likes 的平均数
> db.blog.aggregate(
...    [ {$group:{_id:null, likes_avg:{$avg:"$likes"} }} ]
...)
​
{ "_id" : null, "likes_avg" : 333 }
​
演示 $min,$max
 
# 显示每一个 author 的 likes 最小值记录
> db.blog.aggregate(
...     [ {$group:{_id:"$author",likes_min:{$min:"$likes"} }} ]
... )
​
{ "_id" : "Tim", "likes_min" : 233 }
{ "_id" : "assad", "likes_min" : 100 }
​
# 显示所有文档记录中 likes 最小的记录
> db.blog.aggregate(
...     [ {$group:{_id:null, likes_min:{$min:"$likes"} }} ]
... )
​
{ "_id" : null, "likes_min" : 100 }
​
# 显示所有文档记录中 likes 最大的记录
> db.blog.aggregate(
...     [ {$group:{_id:null, likes_max:{$max:"$likes"} }} ]
... )
​
{ "_id" : null, "likes_max" : 666 }
演示  $push
 
# 显示各个 author 的 article title 和 likes 列表
> db.blog.aggregate(
...     [ {$group:{_id:"$author",article_like:{$push:{title:"$title",likes:"$likes"}}}} ]
... )
​
{ "_id" : "Tim", "article_like" : [ { "title" : "NoSQL Overview", "likes" : 233 } ] }
{ "_id" : "assad", "article_like" : [ { "title" : "MongoDB Overview", "likes" : 100 }, { "article" : "SqlLite Overview", "likes" : 666 } ] }


按时间分组聚合
对于时间,按年月日,小时分钟秒进行分组聚合,可以使用以下表达式获取时间参数:
  • $dayOfYear: 返回该日期是这一年的第几天(全年 366 天)。
  • $dayOfMonth: 返回该日期是这一个月的第几天(1到31)。
  • $dayOfWeek: 返回的是这个周的星期几(1:星期日,7:星期六)。
  • $year: 返回该日期的年份部分。
  • $month: 返回该日期的月份部分( 1 到 12)。
  • $week: 返回该日期是所在年的第几个星期( 0 到 53)。
  • $hour: 返回该日期的小时部分。
  • $minute: 返回该日期的分钟部分。
  • $second: 返回该日期的秒部分(以0到59之间的数字形式返回日期的第二部分,但可以是60来计算闰秒)。
  • $millisecond:返回该日期的毫秒部分( 0 到 999)。
  • $dateToString: { $dateToString: { format: , date: } }。

以下是示例用的 loginLog 集合内容:
 
{
        "_id" : ObjectId("5a8969f54a7c036151cce245"),
        "ip" : "25.12.4.42",
        "date" : ISODate("2018-02-16T09:33:12Z")
}
{
        "_id" : ObjectId("5a896a164a7c036151cce246"),
        "ip" : "126:123:11:1",
        "date" : ISODate("2018-02-17T10:20:00Z")
}
{
        "_id" : ObjectId("5a896a2c4a7c036151cce247"),
        "ip" : "23.88.44.22",
        "date" : ISODate("2018-01-20T20:30:00Z")
}
{
        "_id" : ObjectId("5a896a4a4a7c036151cce248"),
        "ip" : "55.78.22.123",
        "date" : ISODate("2018-02-19T21:59:20Z")
}
>
示例:
 
# 统计每个月分组的文档总数
> db.loginLog.aggregate([
...     { $group:{_id:{$month:"$date"},log_count:{$sum:1}} }
... ])
​
{ "_id" : 1, "log_count" : 1 }
{ "_id" : 2, "log_count" : 3 }


MongoDB聚合操作MongoDB常用聚合管道聚合$project$match$count$group$unwind$limit$skip$sort$lookup用法及操作案例 目录 1.聚合操作 1.1 单一作用聚合 1.2 聚合管道 什么是 MongoDB 聚合框架 管道(Pipeline)和阶段(Stage) 常用的管道聚合阶段 $project $match $count $group $unwind $limit $skip $sort $lookup 聚合操作案例1 聚合操作案例2 1.3 MapReduce 1.聚合操作 聚合操作处理数据记录并返回计算结果。聚合操作组值来自多个文档,可以对分组数据执行各种操作以返回单个结果。 阅读详情

相关推荐

MongoDB 聚合管道极简教程

聚合管道是一个操作数组,每个操作都接收并处理输入数据,并将其传递到下一个操作。每个管道阶段都对数据进行转换、过滤、排序、分组、计算等操作,最终返回结果。管道的每个阶段通过一个操作符表示。常用的聚合操作符包括$match$group$sort$project$limit等。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1131

mongodb aggregate 统计时间差

subtract: 减法运算符。$multiply: 乘法运算符。$divide: 除法运算符。$match : 匹配条件。$add: 加法运算符。

qq_15874209的博客 472

MongoDB聚合操作总结

MongoDB 中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似 SQL 语句中的 , , 。MongoDB中聚合的方法使用aggregate()。语法格式:案例:计算每个作者所写的文章数,使用aggregate()计算结果如下 在上面的例子中,通过字段 by_user 字段对数据进行分组,并计算 by_user 字段相同值的总和。1、$sum 计算总和。 1、$avg 计算平均值 1、$min 获取集合中所有文档对应值得最小值。 1、$max 获取集

数据知道的博客 3万+

mongoTemplate使用group函数进行分组和统计

1 简介 在工作的过程中,使用MongoDB存储业务数据,有时候想做的不仅仅是将数据从MongoDB中提取出来,可能需要对数据进行分析并加以利用。在党费收缴模块开发过程中,需要根据党支部名称进行分组,统计出党支部内人员的数目,每个党支部应缴党费和实缴党费的总和 等统计信息。 由于spring-data-mongodb-1.9.5.RELEASE版本太低,因此在调用mongoTemplate类型的a...

不当初 2万+

农业AI避坑指南:用YOLO11做叶片病害检测时遇到的5个典型问题

本文分享了使用YOLO11模型进行农业叶片病害检测时常见的五个典型问题及解决方案。针对田间多变光照、病害样本不均衡、标注歧义、背景干扰和边缘部署等挑战,提供了包括场景自适应数据增强、解耦训练、软标签与鲁棒损失函数、困难负样本构建以及模型轻量化部署在内的实战经验,旨在帮助开发者提升农业AI项目的落地效果。

ujm56789012的博客 206

利用运放设计简单有源滤波器(低通、高通、带通)

本文旨在帮助刚接触模电的同学快速设计一个实用可靠的运放,故我将不会说一些晦涩难懂的原理,只给出仿真电路图。

WeiTong0527的博客 3万+

MongoDB聚合运算符:$minute

摘要:`$minute`聚合运算符返回日期中分钟部分的数字值为0到59之间

superatom01的博客 728

UFS 3.1协议分析(第五章) -- UFS协议栈

ContentsUFS顶层架构应用层UFS命令集UFS 设备管理器UFS任务管理器传输层互连层 UFS顶层架构     UFS基于SCSI SAM架构模型定义了一个完整的协议栈,从上到下依次为应用层、传输层、数据链路层、物理层。UFS使用MIPI联盟的UniPro作为数据链路层和MIPI的M-PHY作为物理层,两者合起来称之为互连层(UFS InterConnect Layer) 应用层     应用层包括UFS命令集、设备管

Frank_sample的专栏 7369

mongodb针对查询数据保留两位小数或者自定义

1、实现原理,根据字符串截取实现 db.collection.aggregate([ {$project : {field : "123.4569999999"}}, // 自定义数值 {$project : { field2 : { // 自定义...

u014259503的博客 9102

单细胞分析R包monocle3服务器安装教程

由于centos7系统yum只能安装到低版本gdal,而monocle3依赖包需要 gdal>2 版本,从gdal官网下载2.4.4版本编译安装。monocle3的安装是通过cole-trapnell-lab安装的,该包挂在github上,需要通过github先安装leidenbase包,需要提前安装devtools包下载工具。接着利用BiocManager安装相应的依赖包,由于这些包的特殊性,所以不要切换到国内Bio_Mirror镜像,否则会找不到,如果一次不成功,缺啥补啥即可。运行 ldconfig。

qq_36608036的博客 1万+

Android布局基础与UI设计入门:打造精美应用界面

恭喜你!现在你已经掌握了Android UI开发的基础知识,包括各种布局类型、常用控件的使用以及一些UI优化技巧。这些知识将帮助你设计出既美观又实用的Android应用界面。

m0_65382359的博客 2056

MongoDB聚合操作

MongoDB聚合操作

野心与梦 1万+

EtherCAT丢包问题深度解析:从原理到实战排查指南

在工业自动化与运动控制领域,实时通讯网络的稳定性是系统可靠运行的基石。EtherCAT(以太网控制自动化技术)作为一种高性能工业以太网协议,其核心在于独特的“飞读飞写”机制和纳秒级的分布时钟同步,以实现多设备间的精准协同。然而,物理链路干扰、配置不当或硬件性能瓶颈都可能导致数据帧丢失,破坏时钟同步,进而引发伺服抖动、定位精度下降乃至生产线停机。本文聚焦于EtherCAT丢包这一典型故障,结合SSC(Slave Stack Code Tool)从站协议栈开发与实时系统调优等工程实践,系统阐述其成因、影响及一套

weixin_32050773的博客 341

【Mongodb-04】Mongodb聚合管道操作基本功能

深入理解mongodb聚合管道基本功能

zhenghuishengq的博客 2004

【智能流体力学】使用ANSYS Fluent + SpaceClaim + SCDM制作流体力学前处理的几何模型

生成来源.scdoc文件来自前处理工具生成的模型数据,或在 FLUENT 中创建和保存的模型。生成方式: 通过前处理工具导出网格数据,或在 FLUENT 中设置并保存模型。作用: 用于储存模型的结构信息和设置,确保在 FLUENT 中的正确导入和使用。.x_t文件是 Parasolid 文件格式的扩展名,用于存储三维模型数据。在 ANSYS Fluent 中,这种格式通常用于在前处理工具之间交换几何数据。要创建.x_t。

源代码杀手的博客 3265

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

MongoDB 聚合管道速成教程

MongoDB 的聚合管道(Aggregation Pipeline)是一种强大的数据处理工具,它允许你对文档进行一系列的操作,如过滤、转换、分组和聚合等。聚合管道由多个管道组成,每个管道对输入的文档进行特定的处理,并将处理后的结果传递给下一个管道。

北京锋通科技有限公司的技术blog 1617

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

MongoDB聚合操作详解

数组列存放的数据是来自被Join集合的适配文档,如果没有,集合为空(即 为[ ])操作具有两个阶段:处理每个文档并向每个输入文档发射一个或多个对象的map阶段,以及reduce组合map操作的输出阶段。投影操作, 将原始字段投影成指定名称,也就是mysql中的字段别名功能。筛选管道操作和其他管道操作配合时候时,尽量放到开始阶段,这样可以减少后续管道操作符要操作的文档数,提升效率。操作只会在过程中维持前n个结果,其中n是指定的限制,而MongoDB只需要将n个项存储在内存中。

qq_44027353的博客 1390

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

MongoDB-聚合操作

管道(Pipeline)和阶段(Stage):整个聚合运算过程称为管道(Pipeline),它是由多个阶段(Stage)组成的。用于对文档进行筛选,之后可以在得到的文档子集上做聚合,可以使用除了地理空间之外的所有常规查询操作符。用于对输入文档进行分组,根据指定的边界(buckets)将文档分配到指定的组,类似于。用于将聚合结果写入到指定的集合中。跳过进入stage的指定数量的文档,并将其余文档传递到管道中的下一个阶段。按指定的表达式对文档进行分组,并将每个不同分组的文档输出到下一个阶段。

姜希成的博客 1762

深入浅出:MongoDB聚合管道的技术详解

聚合管道是MongoDB中用于数据聚合和处理的强大工具。它允许开发者通过一系列有序的阶段(Stages)对数据进行筛选、转换、分组和计算,从而生成符合需求的聚合结果。每个阶段都定义了一种操作,数据在每个阶段经过处理后,传递给下一个阶段,最终得到所需的聚合结果。

码到三十五 1969

MongoDB 聚合管道

MongoDBMongoDB 聚合管道聚合管道概述需要注意的几个问题:聚合管道操作符$project 指定文档显示的方式连接字段$concat用于连接字符串(参数必须是字符串类型数组)对字段进行分解 $substr$match相当于find第一个参数,用于过滤文档$limit $skip $sort的使用$unwind MongoDB 聚合管道 聚合管道概述 聚合管道由阶段组成 每个阶段由阶段操作符来对文档进行相应的处理 待处理的文档会流经各个阶段,最终完成计算 db.集合名.aggregate([{}])

m0_52519089的博客 1896

MongoDB 聚合,管道操作实例

文章目录前言一、aggregate() 方法二、其他聚合的表达式 实例1.计算分组求和:$sum2、 计算平均值:$avg3、获取集合中所有文档对应值得最小值。$min4、获取集合中所有文档对应值得最大值。$max5、在结果文档中插入值到一个数组中。$push6、在结果文档中插入值到一个数组中,但不创建副本。$addToSet7、根据资源文档的排序获取第一个文档数据。$first8、根据资源文档的排序获取最后一个文档数据$last三、管道四、管道操作符实例1、$project实例2.$match实例3.$s

diaolove的博客 1376

MongoDB聚合管道(Aggregation Pipeline)

聚合管道(Aggregation Pipeline)是MongoDB中用于对数据进行处理和分析的一种强大机制。它由一系列的阶段(Stage)组成,每个阶段对输入的数据进行一种特定的操作,然后将结果传递给下一个阶段,就像在一个管道中对数据进行逐步处理一样。

莫凡的博客 1359

学习MongoDB,在java中使用MongoTemplate聚合操作MongoDB

1.聚合操作Aggregation介绍    Aggregation简单来说,就是提供数据统计、分析、分类的方法,这与mapreduce有异曲同工之处,只不过mongodb做了更多的封装与优化,让数据操作更加便捷和易用。Aggregation操作,接收指定collection的数据集,通过计算后返回result数据;一个aggregation操作,从input源数据到output结果数据,中间会...

街角有人祝福,巷口有人哭~ 1万+

MongoDB Shell 基本命令(三)聚合管道

加上管道,查看与某个特定端口(27017)相关的连接,findstr相当于Linux中的grep,用于查找字符串的命令行工具。“ESTABLISHED” 是 TCP 协议的一种状态,表示一条 TCP连接已经成功建立,并且可以开始数据通信。所以,管道的含义就是:前一个命令的结果,作为后续命令的输入。我们可以在前面查询的基础上,整理过后,再进行查询。阶段用于过滤集合中的文档,以保留所有符合指定条件的文档。类似Linux中的管道,前一个命令的输出作为后一个命令的输入。显示网络连接、路由表和网络接口统计信息。

CREATED BY RICK. 1361
上一篇: MongoDB(5)文档 CRUD 操作
下一篇: MongoDB(7)索引管理
Al_assad
博客等级 码龄11年 591粉丝 341原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值