我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MongoDB中aggregate()方法实例详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MongoDB中aggregate()方法实例详解

前言

MongoDB的一个很大的好处是能够使用MapReduce来吧数据库查询的结果简化成一个与原来的集合完全不同的结构。MapReduce把一个数据库查询的值映射为一个完全不同的形式,然后简化结果,使它们的可用性更好。

MongoDB有一个MapReduce框架,它也允许你使用聚合来简化吧一个MapReduce操作传输到另一个MapReduce操作的一系列过程。有了MapReduce和聚合,可以用数据生成一些不平凡的业绩。聚合的概念是指,在把MongoDB服务器上的文档汇编为一个结果集时,对它们执行一些列的操作。这比在Node.js应用程序中检索它们和处理它们更高效,因为MongoDB的服务器可以在本地操作数据块。

1,了解aggergate()方法

Collection对象提供了aggregate()方法来对数据进行聚合操作。aggregate()方法的语法如下

aggregate(operators,[options],callback)

operators参数是如表1所示的聚合运算符的数组,它允许你定义对数据执行什么汇总操作。options参数允许你设置readPreference属性,它定义了从哪里读取数据。callback参数是接受err和res

可以在aggregate()方法上使用的聚合运算符
运算符说明
$project

通过重命名,添加或删除字段重塑文档。你也可以重新计算值,并添加子文档。例如,下面的例子包括title并排除name:

{$project:{title:1,name:0}}

以下是把name重命名为title的例子:

{$project{title:"$name"}}

下面是添加一个新的total字段,并用price和tax字段计算它的值的例子:

{$project{total:{$add:["$price","$tax"]}}}

$match通过使用query对象运算符来过滤文档集。
$limit限定可以传递到聚合操作的下一个管道中的文档数量。例如{$limit:5}
$skip指定处理聚合操作的下一个管道前跳过的一些文档
$unwind指定一个数组字段用于分割,对每个值创建一个单独的文档。例如{$unwind:"$myArr"}
$group

把文档分成一组新的文档用于在管道中的下一级。新对象的字段必须在$group对象中定义。你还可以把表2中列出的分组表

达式运算符应用到该组的多个文档中。例如,使用下面的语句汇总value字段:{$group:{set_id:"$0_id",total:{$sum:"$value"}}}

$sort

在把文档传递给处理聚合操作的下一个管道前对它们排序。排序指定一个带有field:<sort_order>属性的对象,其中<sort_order>

为1表示升序,而-1表示降序

2,实现聚合表达式运算符

当你实现聚合运算符时,你建立将传递到聚合操作流水线的下一级的新文档。MongoDB的聚合框架提供了许多表达式运算符,它们有助于对新字段计算值或对文档中的现有字段进行比较。

当在$group聚合管道上操作时,多个文档与创建的新文档中定义的字段匹配。MongoDB提供了一组你可以应用到这些文档的运算符,并用它在原来文档集的字段值的基础上计算新组文档中的字段值。下表列出了$group表达式运算符。

聚合$group表达式运算符
运算符说明
$addToSet返回一组文档中所有文档所选字段的全部唯一值的数组。例如:colors:{$addToSet:"color"}
$first返回一组文档中一个字段的第一个值。例如:firstValue:{$first:"$value"}
$last返回一组文档中一个字段的最后一个值。例如:lastValue:{$last:"$value"}
$max返回一组文档中一个字段的最大值。例如:maxValue:{$max:"$value"}
$min返回一组文档中一个字段的最小值。例如:minValue:{$min:"$value"}
$avg返回一组文档中以个字段的平均值。例如:avgValue:{$avg:"$value"}
$push返回一组文档中所有文档所选字段的全部值的数组。例如:username:{$push:"$username"}
$sum返回一组文档中以个字段的全部值的总和。例如:total:{$sum:"$value"}

此外,计算新的字段值时,可以应用一些字符串和算术运算符。下表列出了在聚合运算符中计算新字段值可以应用的最常用的一些运算符。

可用在聚合表达式的字符串和算术运算符
运算符说明
$add计算数值的总和。例如:valuePlus5:{$add:["$value",5]}
$divide给定两个数值,用第一个数除以第二个数。例如:valueDividedBy5:{$divide:["$value",5]}
$mod取模。例如:{$mod:["$value",5]}
$multiply计算数值数组的乘积。例如:{$multiply:["$value",5]}
$subtract给定两个数值,用第一个数减去第二个数。例如:{$subtract:["$value",5]}
$concat

连接两个字符串 例如:{$concat:["str1","str2"]}

$strcasecmp比较两个字符串并返回一个整数来反应比较结果。例如 {$strcasecmp:["$value","$value"]}
$substr返回字符串的一部分。例如:hasTest:{$substr:["$value","test"]}
$toLower将字符串转化为小写。
$toUpper将字符串转化为大写

总结

到此这篇关于MongoDB中aggregate()方法实例详解的文章就介绍到这了,更多相关MongoDB aggregate()方法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MongoDB中aggregate()方法实例详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MongoDB中aggregate()方法实例详解

目录前言1,了解aggergate()方法2,实现聚合表达式运算符总结前言MongoDB的一个很大的好处是能够使用MapReduce来吧数据库查询的结果简化成一个与原来的集合完全不同的结构。MapReduce把一个数据库查询的值映射为一个
2023-01-03

java 中createStatement()方法的实例详解

java 中createStatement()方法的实例详解用缺省设置创建时,ResultSet 是一种只能访问一次(one-time-through)、只能向前访问(forward-only)和只读的对象。您只能访问数据一次,如果再次需要
2023-05-31

node.js操作MongoDB的实例详解

node.js操作MongoDB时,需要安装mongodb包 1、使用npm安装cnpmnpm install -g cnpm --registry=https://registry.npm.taobao.org2、使用cnpm安装mong
2022-06-04

Python操作MongoDB详解及实例

Python操作MongoDB详解及实例 由于需要在页面展示MongoDB库里的数据,所以考虑使用python操作MongoDB,PyMongo模块是Python对MongoDB操作的接口包,所以首页安装pymongo。 1、安装命令pip
2022-06-04

vue中使用echarts的方法实例详解

这篇文章主要介绍了vue中使用echarts的方法,结合实例形式详细分析了vue中使用echarts的包安装、引入、生命周期函数元素挂载等相关操作技巧与使用注意事项,需要的朋友可以参考下
2023-05-19

mysql中json_extract的使用方法实例详解

目录一、前言二、创建示例表三、基本语法- 获取jsON对象中某个key对应的value值- 获取JSON数组中某个元素- 获取JSON中的嵌套数据四、渐入佳境- 获取JSON多个路径的数据- 路径表达式*的使用- 返回NULL值- 返回错误
2023-04-13

spring中aop的xml配置方法实例详解

前言AOP:即面向切面编程,是一种编程思想,OOP的延续。在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等等。aop,面向切面编程的目标就是分离关注点,比如:一个骑士只需要关注守护安全,或者远征,而骑士辉煌一生的事迹由谁
2023-05-31

MySQL中substr函数使用方法实例详解

目录前言1. SUBSTR 函数简介2. SUBSTR 函数的基本语法3. SUBSTR 函数的使用示例3.1 提取子字符串3.2 从特定位置开始提取3.3 提取特定长度的子字符串3.4 在实际应用中的示例示例 1:从电子邮件地址中提取域名
MySQL中substr函数使用方法实例详解
2024-08-09

Kotlin 语言中调用 JavaScript 方法实例详解

Kotlin 语言中调用 JavaScript 方法实例详解Kotlin 已被设计为能够与 Java 平台轻松互操作。它将 Java 类视为 Kotlin 类,并且 Java 也将 Kotlin 类视为 Java 类。但是,JavaScri
2023-05-31

vue中播放rtsp流的方法实例详解

最近有个需求是前端在浏览器显示摄像头传回的RTSP视频流,下面这篇文章主要给大家介绍了关于vue中播放rtsp流的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
2022-12-21

MongoDB慢查询与索引实例详解

目录MongoDB慢查询MongoDB索引总结 MongoDB慢查询慢查询分析开启内置的慢查询分析器db.setProfilingLevel(n,m),n的取值可选0,1,20:表示不记录1:表示记录慢速操作,如果值为1,m需要传慢查
2022-07-29

编程热搜

目录