[Mongodb 5.0]聚合操作

这篇具有很好参考价值的文章主要介绍了[Mongodb 5.0]聚合操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 本文对应Aggregation Operations — MongoDB Manual

 [Mongodb 5.0]聚合操作,mongodb,数据库

 正文

此章节主要介绍了Aggregation Pipeline,其实就是将若干个聚合操作放在管道中进行执行,每一个聚合操作的结果作为下一个聚合操作的输入,每个聚合指令被称为一个stage。

在正式开始学习聚合操作前,请先按照下面的方式在你的mongodb中创建数据可和插入记录:

首先通过创建数据库和表,我这里为了方便直接使用可视化工具Robo3T(官网推荐)来进行操作

[Mongodb 5.0]聚合操作,mongodb,数据库

 然后直接通过下面指令添加记录

db.orders.insertMany( [
   { _id: 0, name: "Pepperoni", size: "small", price: 19,
     quantity: 10, date: ISODate( "2021-03-13T08:14:30Z" ) },
   { _id: 1, name: "Pepperoni", size: "medium", price: 20,
     quantity: 20, date : ISODate( "2021-03-13T09:13:24Z" ) },
   { _id: 2, name: "Pepperoni", size: "large", price: 21,
     quantity: 30, date : ISODate( "2021-03-17T09:22:12Z" ) },
   { _id: 3, name: "Cheese", size: "small", price: 12,
     quantity: 15, date : ISODate( "2021-03-13T11:21:39.736Z" ) },
   { _id: 4, name: "Cheese", size: "medium", price: 13,
     quantity:50, date : ISODate( "2022-01-12T21:23:13.331Z" ) },
   { _id: 5, name: "Cheese", size: "large", price: 14,
     quantity: 10, date : ISODate( "2022-01-12T05:08:13Z" ) },
   { _id: 6, name: "Vegan", size: "small", price: 17,
     quantity: 10, date : ISODate( "2021-01-13T05:08:13Z" ) },
   { _id: 7, name: "Vegan", size: "medium", price: 18,
     quantity: 10, date : ISODate( "2021-01-13T05:10:13Z" ) }
] )

上面插入的数据,用Robo3T的表格形式显示一下如下:

[Mongodb 5.0]聚合操作,mongodb,数据库

 文章来源地址https://www.toymoban.com/news/detail-659265.html

现在有了数据后,我们开始正式学习聚合操作相关的指令

 运行聚合操作,使用的命令为

 db.collection.aggregate() 

下面开始学习聚合相关的指令

  • $match
    $match相当于sql中的where条件,来看例子:
    例子:将表中,size字段为medium的记录查询出来
    db.orders.aggregate( [
       {
          $match: { size: "medium" }
       }
    ] )
    [Mongodb 5.0]聚合操作,mongodb,数据库        
  • $group 
    $group就是分组的意思,看例子
    例子:查找size为medium,并且对其进行分组显示
    db.orders.aggregate( [
       // Stage 1: Filter pizza order documents by pizza size
       {
          $match: { size: "medium" }
       },
       // Stage 2: Group remaining documents by pizza name and calculate total quantity
       {
          $group: { _id: "$name", totalQuantity: { $sum: "$quantity" } }
       }
    ] )

    [Mongodb 5.0]聚合操作,mongodb,数据库

     在这个例子中我们就会看到聚合操作中所谓的pipeline的用法,例子中我们用了$match和$group两个指令,他们的执行是分为2个阶段(stage),第一个阶段通过$match来进行数据的过滤,将满足的数据作为$group指令的输入,$group指令将$match的结果进行分组。后面的例子中全都是这种pipeline方式的聚合操作。

  • $project
    $project用来指定只输出哪些字段,看例子
    例子:查询name字段为Pepperoni的记录,并且只显示_id和name两个字段

    db.orders.aggregate( [
       { $match: { name: "Pepperoni"} },
       { $project: { _id: 1, name: 1} }
     ] )

    [Mongodb 5.0]聚合操作,mongodb,数据库
    通过$project我们指定结果中只显示_id和name字段,注意的是,在$match这个阶段输出的结果中包含了所有的字段,而只有在$project这个阶段,才将所以字段中的_id和name两个字段拿出来显示。

  • $sort
    $sort就是就它上面阶段输出的内容进行排序的作用,看例子
    例子:查询name字段为Pepperoni的记录按照_id进行排序,并且只显示_id和name两个字段.

    db.orders.aggregate( [
       // Stage 1: Filter pizza order documents by date range
       { 
           $match: { name: "Pepperoni"} 
       },
       { 
           $project: { _id: 1, name: 1}
        },
        {
            $sort:{_id:-1} // -1:倒序 | 1:正序
        }
     ] )

    [Mongodb 5.0]聚合操作,mongodb,数据库

关于更多的aggregate Pipeline的的指令这里就全部列出来了,大家可以到官网中查询剩余的其他指令,下面讲一下关于使用aggregate pipeline的一些限制

  1. 在使用aggregate命令执行聚合操作是,对于发挥结果是由限制的,也就是你返回的json内容大小不能超过16 megabyte(16MB)
  2. 上面介绍的这些例如$project,$sort这些用在pipeline中的指令不能超过1000个(每个指令被称为一个阶段stage)阶段
  3. 当查询结果大于16MB时,会默认使用磁盘来存储结果,可以通过 { allowDiskUse: false }来禁用这个写入磁盘的操作。

Aggregation Pipeline and Sharded Collections

 就是当我们的mongdb是在分片模式下,如何使用聚合操作

 

到了这里,关于[Mongodb 5.0]聚合操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MongoDB-数据库文档操作(2)

    任务描述 文档数据在 MongoDB 中的查询和删除。 相关知识 本文将教你掌握: 查询文档命令; 删除文档命令。 查询文档 我们先插入文档到集合 stu1 : 然后查看 stu1 ,命令和结果如图1所示(因为我们没有设置 _id ,所以 MongoDB 会默认生成: 图 1 上述显示的文档格式不够整齐,

    2024年01月18日
    浏览(40)
  • MongoDB-数据库文档操作(1)

    任务描述 文档数据在 MongoDB 中的插入和更新。 相关知识 本文将向大家介绍文档数据在 MongoDB 中的基本操作。 文档的数据结构和 JSON 基本一样,所有存储在集合中的数据都是 BSON 格式。BSON 是一种类 JSON 的一种二进制形式的存储格式,简称: Binary JSON 。 本文将教你掌握:

    2024年01月17日
    浏览(47)
  • 【Nodejs】操作mongodb数据库

    Mongoose是一个让我们可以通过Node来操作MongoDB的模块。 Mongoose是一个对象文档模型(ODM)库,它对Node原生的MongoDB模块进行了进一步的优化封装,并提供了更多的功能。在大多数情况下,它被用来把结构化的模式应用到一个MongoDB集合,并提供了验证和类型转换等好处 mongoose中的对象

    2024年02月15日
    浏览(38)
  • Python 操作 MongoDB 数据库介绍

    MongoDB 是一款面向文档型的  NoSQL  数据库,是一个基于分布式文件存储的开源的非关系型数据库系统,其内容是以  K/V  形式存储,结构不固定,它的字段值可以包含其他文档、数组和文档数组等。其采用的  BSON (二进制 JSON )的数据结构,可以提高存储和扫描效率,但空

    2024年02月10日
    浏览(46)
  • redis及mongoDB数据库操作

    Redis作业 1、string类型数据的命令操作: (1) 设置键值: SET key value 例如: SET name \\\"John\\\" (2) 读取键值: GET key 例如: GET name (3) 数值类型自增1: INCR key 例如: INCR count (4) 数值类型自减1: DECR key 例如: DECR count (5) 查看值的长度: STRLEN key 例如: STRLEN name 2、lis

    2024年02月16日
    浏览(38)
  • redis数据库和MongoDB数据库基本操作

    (1) 设置键值 (2) 读取键值 (3) 数值类型自增1 (4) 数值类型自减1 (5) 查看值的长度 (1)对列表city插入元素:Shanghai Suzhou Hangzhou (2)将列表city里的头部的元素移除 (3) 对一个已存在的列表插入新元素 (4)查看list的值长度 (1) 设置一个hash表,order表里包括的

    2024年02月16日
    浏览(61)
  • MongoDB创建用户 、数据库、索引等基础操作

    MongoDB的权限认证是相对来说比较复杂的,不同的库创建后需要创建用户来管理。 本机中的MongoDB是docker 启动的,所以先进入docker的镜像中 这样就进入到了镜像MongoDB中,然后输入命令连接MongoDB数据库   注意用户名密码以及数据库名称  出现这个界面说明登录成功 接下来开始

    2024年02月14日
    浏览(44)
  • 分布式数据库NoSQL(二)——MongoDB 数据库基本操作

    MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 json 的

    2024年02月06日
    浏览(49)
  • MongoDB常用的操作(服务器、数据库、集合)

    前面两篇已经介绍了MongoDB系统架构及其BSON数据类型。本文将讲解基本的MongoDB操作。 一、MongoDB启动命令 启动MongoDB 查看是否启动成功 重启MongoDB 关闭MongoDB 二、使用init命令操作MongoDB 启动MongoDB 查看是否启动成功 重启MongoDB 关闭MongoDB 三、启动mongodb客户端 查看该服务是否启动

    2024年02月07日
    浏览(61)
  • 数据库操作入门:PyMongo 和 MongoDB 的基本用法

    MongoDB是一种流行的NoSQL数据库,它将数据存储在类似JSON的文档中,使数据库非常灵活和可扩展 Python需要一个MongoDB驱动程序来访问MongoDB数据库。在本教程中,我们将使用MongoDB驱动程序 \\\"PyMongo\\\"。建议使用PIP来安装 \\\"PyMongo\\\",确保您的Python环境已安装PIP。 在命令行中导航到PIP的

    2024年02月05日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包