mongo聚合操作符$unwind
1.原始数据
2.需求
1.按条件获取所有停机原因及对应的停机时长数据
2.按条件获取指定停机类型下的停机原因及停机时长
3.操作
3.1 获取所有停机原因及时长
db.stop_reason_duration_daily_data.aggregate([{'$match': {"timestamp": {"$gte": ISODate("2020-10-01T00:00:00.000+0000"), "$lt": ISODate("2020-12-24T00:00:00.000+0000")},}},{'$unwind': '$reason_detail_res'},{'$group': {'_id': '$reason_detail_res.name','count': {'$sum': '$reason_detail_res.value'},}},{'$project': {'_id': 0,'name': '$_id','value': '$count'}}])
3.2 指定停机分类或停机类型下的停机原因及时长
db.stop_reason_duration_daily_data.aggregate([{'$match': {"timestamp": {"$gte": ISODate("2020-10-01T00:00:00.000+0000"), "$lt": ISODate("2020-12-24T00:00:00.000+0000")},}},{'$unwind': '$reason_detail_res'},{'$match': {'reason_detail_res.reason_class': '速度损失', 'reason_detail_res.shut_down_type': '计划外停机'}}, # 此处用来过滤指定停机分类或停机类型{'$group': {'_id': '$reason_detail_res.name','count': {'$sum': '$reason_detail_res.value'},}},{'$project': {'_id': 0,'name': '$_id','value': '$count'}}])
4.$unwind 拆解数组字段
4.1 定义
- 定义 field版
{ $unwind: <field path> }
- 定义document版
{$unwind:{path: <field path>,includeArrayIndex: <string>,preserveNullAndEmptyArrays: <boolean>}
}
path
你要打散的字段
includeArrayIndex
,可选的。一个新字段的名称,用于保存元素的数组索引。名称不能以美元符号开头。
preserveNullAndEmptyArrays
,可选的。如果为true,则如果path为null,缺失或空数组,则$unwind
输出文档。如果为false,如果path为null,缺少或为空数组,$unwind则不会输出文档。默认值为false。
4.2 示例:
- 原始数据
db.inventory.insertOne({ "_id" : 1, "item" : "ABC1", sizes: [ "S", "M", "L"] })
- 拆分数组
db.inventory.aggregate( [ { $unwind : "$sizes" } ] )
- 拆分结果
{ "_id" : 1, "item" : "ABC1", "sizes" : "S" }
{ "_id" : 1, "item" : "ABC1", "sizes" : "M" }
{ "_id" : 1, "item" : "ABC1", "sizes" : "L" }
参考:https://docs.mongodb.com/manual/reference/operator/aggregation/unwind/
mongo聚合操作符$unwind相关推荐
- Mongo 聚合框架-Aggregate(一)
一 概念 1.简介 使用聚合框架可以对集合中的文档进行变换和组合.可以用多个构件创建一个管道,用于对一连串的文档进行处理.构件有:筛选.投射.分组.排序.限制和跳过. MongoDB的聚合管道将Mon ...
- Mongo聚合函数使用Sort排序时内存不足导致查询失败,开启allowDiskUse=true
目录 1.问题描述 2.问题解决 1. Java代码方式解决办法 2. Mongo 原生聚合函数解决办法 1.问题描述 由于项目原因, 需要向数据存储至mongo,在使用过程中 , 单个documen ...
- 【mongoDB实战】聚合管道--$unwind
$unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值. 在做项目的时候碰上了这样的需求: 实例讲解: {"_id" : ObjectId(" ...
- mongo java aggregate_java使用spring + mongo进行Aggregation聚合查询
笔记:使用mongo聚合查询(一开始根本没接触过mongo,一点一点慢慢的查资料完成了工作需求) 需求:在订单表中,根据buyerNick分组,统计每个buyerNick的电话.地址.支付总金额以及总 ...
- mongodb聚合查询-aggregate
Mongodb-aggregate 在工作中经常遇到一些mongodb的聚合操作,和mysql对比起来,mongo存储的可以是复杂的类型,比如数组,字典等mysql不善于处理的文档型结构,但是mong ...
- mongodb高级聚合查询
在工作中会经常遇到一些mongodb的聚合操作,特此总结下.mongo存储的可以是复杂类型,比如数组.对象等mysql不善于处理的文档型结构,并且聚合的操作也比mysql复杂很多. 注:本文基于 mo ...
- MongoDB聚合查询 Pipeline 和 MapReduce
MongoDB聚合查询 MongoDB聚合查询 什么是聚合查询 Pipeline聚合管道方法 聚合流程 详细流程 聚合语法 常用聚合管道 $count $group $match $unwind $p ...
- mongodb-18.聚合查询练习1
文章目录 bulk write addFields 增加field 嵌套增加field 覆盖显示 用变量替换 向数组中增加元素 分组 bucket 并行执行多个bucket $bucketAuto $ ...
- mongodb aggregate $unwind
首先了解一下这个单词啥意思,知道的就不说了,不知道的咱先了解一下. 那么mongo的这个 $unwind 命令的作用:拆分(unwind)可以将数组中的每一个值拆分为单独的文档. 示范一下怎么拆分 先 ...
最新文章
- win7 64位安装mysql教程视频_64位Win7系统安装Mysql 5.7.22图文教程
- matlab参考答案2011至诚,职高数学试卷答卷答案详解
- BIM+GIS应用实战(听课笔记)
- Android studio Error occurred during initialization of VM 问题解决
- 在vue项目中添加特殊字体
- MySQL 锁(行锁、表锁、页锁、乐观锁、悲观锁等)
- 读书笔记:《穷查理宝典》
- STM32——软件SPI控制AD7705
- nRF51822 DTM 测试 不能连续发送数据
- python 切片步长_python 索引+切片+步长
- 阿里巴巴sentinel限流
- 关于安装Spacy以及de和en模块遇到的坑---附最终解决方案
- 新职业人工智能工程师要学哪些内容?
- getTime()获取时间戳方法与时区有关
- python 头条号_python爬取今日头条收藏目录
- 2019 年第 13 周 DApp 影响力排行榜 | TokenInsight
- 计算机网络工程这专业都学什么,我是学计算机网络工程专业的,我想问一下我以后可以从事哪些方面的工作呀...
- 简单了解APP黑暗模式
- English Learning - Day23 作业打卡 2022.12.29 周四
- sybase数据库环境搭建教程
热门文章
- Windows常用command line操作
- AWS攻防 | 利用DNS技术突破AWS隔离网络限制进行数据渗漏
- 晓庄学院计算机音乐,南京晓庄学院音乐学院新媒体时代高校音乐课程的改革与创新...
- HashSet和LinkedHashSet
- cordova+vue使用插件cordova-plugin-qrscanner自定义扫码页面
- 太鸡冻了!我用Python偷偷查到暗恋女生的名字
- U盘启动各种模式间的区别
- Linux CentOS7 VMware正则介绍、grep工具、egrep表达式
- vue.js elementUI 表格实现隔行变色,自己定义颜色。(斑马纹表格颜色设置,使两种不同的颜色间隔出现)
- 怎么压缩图片大小到指定kb?如何自定义图片压缩大小?