目录

  • 一、聚合管道之$match的概述
  • 二、聚合管道之$count的概述
  • 三、数据准备
  • 四、聚合管道之$match操作示例
  • 五、聚合管道之$count的示例

一、聚合管道之$match的概述

  • $ match用于对文档进行筛选,之后可以在得到的文档子集上做聚合,$ match可以使用除了地理空间之外的所有常规查询操作符,在实际应用中尽可能将$ match放在管道的前面位置。这样有两个好处:一是可以快速将不需要的文档过滤掉,以减少管道的工作量;二是如果再投射和分组之前执行$match,查询可以使用索引。
  • 筛选管道操作和其他管道操作配合时候时,尽量放到开始阶段,这样可以减少后续管道操作符要操作的文档数,提升效率。

二、聚合管道之$count的概述

  • 计数并返回与查询匹配的结果数。

三、数据准备

  • 准备数据集,执行脚本

    var tags = ["nosql","mongodb","document","developer","popular"];
    var types = ["technology","sociality","travel","novel","literature"];
    var books=[];
    for(var i=0;i<50;i++){var typeIdx = Math.floor(Math.random()*types.length);var tagIdx = Math.floor(Math.random()*tags.length);var tagIdx2 = Math.floor(Math.random()*tags.length);var favCount = Math.floor(Math.random()*100);var username = "xx00"+Math.floor(Math.random()*10);var age = 20 + Math.floor(Math.random()*15);var book = {title: "book-"+i, type: types[typeIdx],tag: [tags[tagIdx],tags[tagIdx2]],favCount: favCount, author: {name:username,age:age}};books.push(book)
    }
    db.books1.insertMany(books);
    

四、聚合管道之$match操作示例

  • 查询books1集合中的数据

    > db.books1.find()
    

  • 查询books1集合中type字段为technology的所有数据

    db.books1.aggregate([{$match:{type:"technology"}}])
    

五、聚合管道之$count的示例

  • 查询books1集合中的数据

    > db.books1.find()
    

  • 计数并返回与查询匹配的结果数

    (1)、$ match阶段筛选出type匹配technology的文档,并传到下一阶段;
    (2)、$ count阶段返回聚合管道中剩余文档的计数,并将该值分配给type_count

    db.books1.aggregate([ {$match:{type:"technology"}}, {$count: "type_count"} ])
    

MongoDB——聚合管道之$match和$count操作相关推荐

  1. MongoDB 聚合管道

    MongoDB 聚合管道 聚合管道概述 需要注意的几个问题: 聚合管道操作符 聚合管道的使用 $project 指定文档显示的方式 连接字段$concat用于连接字符串(参数必须是字符串类型数组) 对 ...

  2. MongoDB——聚合管道之$project操作

    目录 一.数据准备 二.聚合管道之$project操作示例 2.1.查询集合中的数据 2.2.$project 可以表示投影操作, 将原始字段投影成指定名称 2.3.$project 可以灵活控制输出 ...

  3. MongoDB 聚合管道(Aggregation Pipeline)

    管道概念 POSIX多线程的使用方式中, 有一种很重要的方式-----流水线(亦称为"管道")方式,"数据元素"流串行地被一组线程按顺序执行.它的使用架构可参考 ...

  4. MongoDB 聚合 aggregate 的 match 和 project 阶段样例

    研究一个 MongoDB 的 aggregate 的 match 和 project 的样例. 博客 博客地址:IT老兵驿站. 正文 前面的帖子有讲过,MongoDB 的 aggregate 是可以分 ...

  5. MongoDB 聚合管道中使用字符串表达式运算符

    字符串表达式运算符主要用于实现字符串操作,主要包括了大小写转换.字符串截取.拼接.替换等 一.准备工作 初始化字符串数据 db.strings.insertMany([{ "_id" ...

  6. MongoDB聚合(aggregate)常用操作及示例

    简介 MongoDB 中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果. 有点类似 SQL 语句中的 count(*). 常用操作 表达式 描述 $mat ...

  7. Spring Boot 整合——MongoDB整合3(MongoDB聚合操作)

    文章前面 关于版本 依赖 版本 springboot 2.0.8.RELEASE mongodb 4.0.14 本内容只是为了介绍mongodb最基础的使用以及配置,作为一个知名的数据库,其存在相当多 ...

  8. MongoDB聚合aggregate操作集锦

    MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果.有点类似sql语句中的 count(*). 基本语法为:db.collection.agg ...

  9. mongo PHP aggregate,Mongodb中数据聚合之聚合管道aggregate

    在之前的两篇文章 Mongodb中数据聚合之基本聚合函数count.distinct.group 和 Mongodb中数据聚合之MapReduce 中,我们已经对数据聚合提供了两种实现方式,今天,在这 ...

最新文章

  1. sklearn使用FeatureHasher处理字符串特征: AttributeError: ‘str‘ object has no attribute ‘items‘
  2. xp系统中的隐藏文件不能显示 解决方案
  3. 全网最详细SpringBatch读(Reader)混合文件讲解
  4. 阿里云在线web IDE:云效云端开发 DevStudio(ide.aliyun.com)
  5. Java:ThreadPoolExecutor解析
  6. 关于利用IBERT核对GTX收发器板级测试的原理与过程详解
  7. 知乎内容营销新动作:别处种草 知乎种树
  8. Eclipse插件安装全方式
  9. ACL'22 | 一文解读复旦黄萱菁、邱锡鹏等老师NLP实验室的12篇长文
  10. linux 常用命令
  11. 人肉搜索将被禁止,大家要保护好自己的个人信息!
  12. php网页拍照并上传,HTML中网页拍照并上传照片的实现方法
  13. php解析m3u8代码,m3u8后缀 视频解析接口源码
  14. c语言中printf输出,C语言中printf输出的总结
  15. OSChina 周一乱弹 —— 为单身狗准备的菜
  16. mediawiki java api_MediaWiki API 帮助
  17. STM32与中显串口屏的通信
  18. Python 送你一棵圣诞树
  19. Matlab操作excel格式文件
  20. 如何解决:ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

热门文章

  1. 病案归档管理系统_ER图_功能图_数据字典_数据库脚本
  2. Matlab笔记 第二章 基本操作与矩阵输入
  3. git 详解-进阶篇
  4. admin.php生成地址,FastAdmin隐藏后台登录入口地址的方法
  5. 《C Primer Plus》—第九章:函数(指针间接,函数及其定义方式,ANSI C原型,递归,函数调用的底层原理)
  6. 感恩节,《2012》,尖叫
  7. 按了锁定计算机,鼠标锁定了按什么键解锁
  8. springboot基于web的传染病信息管理系统的设计与实现毕业设计-附源码221124
  9. 操作系统内核Hack:(二)底层编程基础
  10. NOI 1.11 二分查找 04: 网线主管