当前位置: 首页 > news >正文

mongodb嵌套聚合


db.order.aggregate([{$match: {// 下单时间"createTime": {$gte: ISODate("2024-05-01T00:00:00Z"),$lte: ISODate("2024-05-31T23:59:59Z")}// 商品名称,"goods.productName": /美国皓齿/,//订单状态  2:待发货 3:已发货 4:交易成功"status": { $in: [2, 3, 4] }}},{// 将订单集合中的商品数组拆开单个商品$unwind: "$goods"},
//    // Match goods with productName containing "美国皓齿"{// 再次过滤商品名称中包含美国皓齿的商品$match: {"goods.productName": /美国皓齿/}},{$group: {_id: {// 根据订单编号进行分组统计orderNo:"$orderNo"//,uniformCode:"$goods.uniformCode" 多分组直接再加个字段即可,这个例子不需要},// 根据订单编号分组算出美国皓齿的商品数量乘单价满499的订单totalGoodsPrice: {$sum: {$multiply: ["$goods.amount", "$goods.unitPrice"]}},// 获取商品数组goods:{$push:"$goods"},// 获取发货地址area:{ $push: "$address.area" }
//						orderStatus:{$push:"$status"}		}},{// 过滤单价满499的订单$match: {totalGoodsPrice: { $gte: 499 }}},// 将按照订单分组后的数组再次按照商品拆开{$unwind: "$goods"},// 按照订单号排序{ $sort : { orderNo : 1}},{$project: {_id: 0,订单号: "$_id.orderNo",uniformCode: "$goods.uniformCode",商品名称:  "$goods.productName",规格: "$goods.standard",单价: "$goods.unitPrice",数量: "$goods.amount",
//						总价:"$totalGoodsPrice",// 发货地址area是个数组,没有拆开,同一个订单的发货地址相同,取数组的第一个元素发货地区:{$arrayElemAt: ["$area", 0]}}}]);

结果:
在这里插入图片描述

相关文章:

  • DataWhale - 吃瓜教程学习笔记(二)
  • 【ThreeJS】Threejs +Vue3 开发基础
  • ASCII 空字符 ‘\0’ ,与空格字符‘ ’
  • 【技巧】Leetcode 201. 数字范围按位与【中等】
  • 定义多个类对象,分别输入和输出各对象中的时间(时:分:秒)
  • Vue82-组件内路由守卫
  • Sourcetree:Git版本控制的最佳伴侣
  • CGFloat转NSString保持原有的精度,末尾不添加0
  • 『大模型笔记』如何让小型语言模型发挥作用!
  • 【odoo】常用的基本视图类型
  • 互联网的盈利模式
  • Kotlin基础——Typeclass
  • three.js 第八节 - gltf加载器、解码器
  • Linux_内核缓冲区
  • 高斯算法的原理及其与常规求和方法的区别
  • Android 架构优化~MVP 架构改造
  • Angular 2 DI - IoC DI - 1
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • Java Agent 学习笔记
  • JavaScript标准库系列——Math对象和Date对象(二)
  • Javascript弹出层-初探
  • JS字符串转数字方法总结
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • 从setTimeout-setInterval看JS线程
  • 翻译:Hystrix - How To Use
  • 欢迎参加第二届中国游戏开发者大会
  • 基于 Babel 的 npm 包最小化设置
  • 前端自动化解决方案
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • ​渐进式Web应用PWA的未来
  • #70结构体案例1(导师,学生,成绩)
  • #每日一题合集#牛客JZ23-JZ33
  • #前后端分离# 头条发布系统
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (done) 声音信号处理基础知识(2) (重点知识:pitch)(Sound Waveforms)
  • (四)activit5.23.0修复跟踪高亮显示BUG
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • *1 计算机基础和操作系统基础及几大协议
  • .gitignore文件---让git自动忽略指定文件
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .net 流——流的类型体系简单介绍
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET开源纪元:穿越封闭的迷雾,拥抱开放的星辰
  • .net连接MySQL的方法
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .net下简单快捷的数值高低位切换
  • .NET应用UI框架DevExpress XAF v24.1 - 可用性进一步增强
  • /run/containerd/containerd.sock connect: connection refused