MongoDB的Map-Reduce操作与聚合管道操作的两个实例相互转换

一、插入集合 comment 的文档的内容

二、题目要求

将集合 comment 中的文档进行聚合操作,即将字段 state为1的文档查询出来,然后按字段 nickname 进行分组,最后计算出每个评论者的评论条数。

三、mapReduce 操作代码

db.comment.mapReduce(// Map函数:用于遍历集合中的每个文档,并将键值对传给reduce函数function() { // 代表每次出现一个评论就计数为1emit(this.nickname, 1); },// Reduce函数:用于聚合Map函数发射的相同键(nickname)的值function(key, values) { // 使用Array.sum方法将相同key的所有值相加,得到该评论者的评论总数return Array.sum(values);},{// Query选项:指定仅对满足条件的文档(state为"1")执行mapReduce操作query: { state: "1" },// 输出选项:将mapReduce的结果输出到一个新的集合中,例如'output_collection'out: "output_collection"}
);
db.comment.mapReduce(function() { // Map函数:筛选state为1的文档,并将nickname作为键,值为1if (this.state === 1) {emit(this.nickname, 1);}},function(key, values) { // Reduce函数:将同一nickname的评论数相加return Array.sum(values);},{// 输出选项:将结果输出到一个新的集合中,例如output_collectionout: "output_collection"}
);

 上述两种方法效果相同。

1. emit(this.nickname, 1) 的作用

(1) 生成键值对:对于每一个满足条件(state 为 1)的文档,emit 函数会将当前文档的 nickname 字段的值作为键(key),并将 1 作为值(value)。

(2) 用于分组和计数emit(this.nickname, 1) 生成的键值对会被传递给 reduce 函数。nickname 作为键用于分组,1 作为值用于计数。在 reduce 函数中,会将同一个 nickname 的所有 1 累加起来,得到该 nickname 出现的次数(即每个评论者的评论总数)。 

四、聚合管道操作代码

db.comment.aggregate([// Stage 1: 筛选文档,选择state为1的文档{ $match: { state: "1" } },// Stage 2: 按nickname字段进行分组,并计算每个组的数量{ $group: { _id: "$nickname",  // 按nickname分组,_id为每个评论者的昵称count: { $sum: 1 } // 计算每个分组中的文档数量}},// Stage 3: 输出选项(可选),按照需要排序或进一步处理结果{$sort: { count: -1 } // 按评论数量降序排序(可选)}
]);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/422238.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux搭建深度学习平台

linux搭建深度学习平台(Ubuntu) /home/guangyao/anaconda3 我服务器的anaconda地址 ~/anaconda3 1 首先就是打开浏览器,我实验室的是火狐,搜索anaconda下载,找到下载目录,cd进去, 2安装 bas…

鸿蒙界面开发——组件(6):属性字符串(StyledString)文本输入

属性字符串StyledString/MutableStyledString MutableStyledString继承于StyledString,以下统一简称StyledString。 是功能强大的标记对象,可用于字符或段落级别设置文本样式。 通过将StyledString附加到文本组件, 可以通过多种方式更改文本…

爆改YOLOv8|利用SCConv改进yolov8-即轻量又涨点

1,本文介绍 SCConv(空间和通道重构卷积)是一种高效的卷积模块,旨在优化卷积神经网络(CNN)的性能,通过减少空间和通道的冗余来降低计算资源的消耗。该模块由两个核心组件构成: 空间重…

ELK在Linux上部署教程

Docker Compose搭建ELK Elasticsearch默认使用mmapfs目录来存储索引。操作系统默认的mmap计数太低可能导致内存不足,我们可以使用下面这条命令来增加内存 sysctl -w vm.max_map_count262144创建Elasticsearch数据挂载路径 mkdir -p /echola/elasticsearch/data对…

【截图服务 +打包】pkg打包 puppeteer

目录 最后结论 windows打包成服务 定制executablePath 用程序来查找chrome.exe 代替上面的写配置文件 服务遇到的问题 使用java开一个线程启动 遇到的问题与解决 版本匹配问题 打出包后的运行报错问题 linux下的安装 安装n 库缺少 程序运行后的报错 制作 运行报…

IT前端好用的工具集

在线抠图网站 https://www.remove.bg/ 将iconfont转成css显示 https://transfonter.org/ 免费的在线图片压缩 https://tinypng.com/ JSON在线格式化工具 https://www.sojson.com/ 国内人工智能kimi.moonshot工具 https://kimi.moonshot.cn/chat/crft7a6sdv14grouufs0 自动…

当人工智能聊天机器人出现问题时

在快速发展的人工智能领域,出现了一项新的挑战。“人工智能私语者”正在通过说服行为良好的聊天机器人打破自己制定的规则来探索人工智能伦理的界限。 这些漏洞被称为即时注入或“越狱”,它们暴露了人工智能系统的漏洞,引发了人们对其安全性…

基于SpringBoot+Vue+MySQL的教学资源共享平台

系统展示 用户前台界面 管理员后台界面 系统背景 随着信息技术的迅猛发展,教育领域对高效、便捷的教学资源需求日益增长。传统教学模式已难以满足当前教育的多样化需求,特别是在资源共享与利用方面存在明显不足。因此,构建一个基于SpringBoot…

OPENAIGC开发者大赛企业组AI黑马奖 | 包你面-AI面试助手

在第二届拯救者杯OPENAIGC开发者大赛中,涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到,我们特意开设了优秀作品报道专栏,旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者,希望能带给您…

HashTable哈希表

概念 散列表(Hash Table),又称哈希表。是一种数据结构,特点是:数据元素的关键字与其存储地址直接相关 在顺序结构以及树型结构中,数据元素的关键字与其存储位置没有对应的关系,因此在查找一个元素时,必须要经过关键码…

【Python篇】PyQt5 超详细教程——由入门到精通(序篇)

文章目录 PyQt5 超详细入门级教程前言序篇:1-3部分:PyQt5基础与常用控件第1部分:初识 PyQt5 和安装1.1 什么是 PyQt5?1.2 在 PyCharm 中安装 PyQt51.3 在 PyCharm 中编写第一个 PyQt5 应用程序1.4 代码详细解释1.5 在 PyCharm 中运…

《论面向服务架构设计及其应用》写作框架,软考高级系统架构设计师

论文真题 面向服务架构(Service-Oriented Architecture, SOA) 是一种应用框架,将日常的业务应用划分为单独的业务功能服务和流程,通过采用良好定义的接口和标准协议将这些服务关联起来。通过实施基于SOA的系统架构,用户可以构建、部署和整合服务,无需依赖应用程序及其运…

计算机毕业设计选题推荐-在线拍卖系统-Java/Python项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

CCDO|数据跃动未来:首席数据官如何引领构建活数据引擎

在数字化浪潮汹涌澎湃的今天,数据已成为企业最宝贵的资产之一,它不仅记录着过去,更预示着未来的方向。随着大数据、人工智能、云计算等技术的飞速发展,数据的潜力被前所未有地激发,而首席数据官(CDO&#x…

opencv之图像梯度

图像梯度 图像梯度计算的是图像变化的速度。对于图像的边缘部分,其灰度值变化较大,梯度值也较大;相反,对于图像中比较平滑的部分,其灰度值变化较小,相应的梯度值也较小。一般情况下,图像梯度计…

string类--C++

文章目录 一、标准库中的string类1、string类2、auto和范围for2.1、auto关键字2.2、范围for 二、string类的常用接口说明1、string类对象的常见构造2、string类对象的容量操作3、string类对象的访问及遍历操作4、string类对象的修改操作5、string类非成员函数6、vs和g下string结…

004: VTK读入数据---vtkImageData详细说明

VTK医学图像处理---vtkImageData类 目录 VTK医学图像处理---vtkImageData类 简介: 1 Mricro软件的安装和使用 (1) Mricro安装 (2) Mricro转换DICOM为裸数据 2 从硬盘读取数据到vtkImageData 3 vtkImageData转RGB或RGBA格式 4 练习 总结 简介:…

堆的概念与实现

目录 一、堆的介绍 1.堆的概念 2.堆的性质: 3.堆的结构 二、堆的实现 1.堆的定义 2.接口函数 三、堆的实现 1.堆的初始化 2.堆的销毁 3.获取堆顶数据 4.判断堆是否为空 5. 堆的插入 向上调整算法(重点) 向下调整算法(重点) 6.删除…

【unity小技巧】unity 把window项目打包成只有一个exe的运行文件

文章目录 前言一、unity游戏打包window二、下载安装WinRAR压缩包打包工具三、添加压缩文件1、选择全部6个(5个也可以,这个64.exe文件可以省略)文件,右键点击添加到压缩文件2、修改压缩文件名,后缀改成.exe3、选择高级–…

【MySQL】索引和事物

索引和事物 索引索引是什么索引的基本操作索引部分原理数据结构讨论B-树B树 MySQL的索引实现 事物事物的概念事物的使用事物的四大特性(ACID)事物并发问题事物的隔离级别 索引 索引是什么 在正常情况下, 数据库去搜索数据, 都是通过一行行的遍历, 然后找到符合要求的行并且筛…