node.js mongoose aggregate

目录

官方文档

简述

Aggregate的原型方法

aggregate进行操作


官方文档

Mongoose v8.0.3: Aggregate

简述

在 Mongoose 中,Aggregate 是用于执行 MongoDB 聚合操作的类。MongoDB 聚合操作是一种强大的数据处理工具,可以用于对集合中的文档进行变换和计算

通过Model.aggregate创建一个aggregate(Aggregate类的实例)

javascript 复制代码
const aggregate = Model.aggregate()

Aggregate的原型方法

aggregate进行操作

对aggregate对象进行操作

javascript 复制代码
aggregate.match({...})
aggregate.group({...})
aggregate.sort({...})
aggregate.project('...')

aggregate链式操作,因为Aggregate的原型方法返回的是this(aggregate实例自身)

javascript 复制代码
aggregate.match({...}).group({...}).sort({...}).project('...')

或者通过传入pipeline参数

javascript 复制代码
const aggregate = await Model.aggregate([
  {
    $match: { ... }
  },
  {
    $group: { ... }
  },
  {
    $sort: { ... }
  },
  {
    $match: { ... }
  }
]);

控制台打印aggregate查看所积累的pipeline操作

得到查询结果

也可通过async await的方式获得查询结果

javascript 复制代码
//async try... catch

const resQuery = await aggregate

完整的操作,只是示例

javascript 复制代码
  const aggregate = Tour.aggregate([
    {
      $match: { ratingsAverage: { $gte: 4.5 } }
    },
    {
      $group: {
        _id: { $toUpper: '$difficulty' },
        numTours: { $sum: 1 },
        numRatings: { $sum: '$ratingsQuantity' },
        avgRating: { $avg: '$ratingsAverage' },
        avgPrice: { $avg: '$price' },
        minPrice: { $min: '$price' },
        maxPrice: { $max: '$price' }
      }
    },
    {
      $sort: { avgPrice: 1 }
    },
    {
      $match: { _id: { $ne: 'EASY' } }
    }
  ]);
  const stats = await aggregate
相关推荐
濮水大叔2 小时前
为什么 AI 最擅长 React/Next.js,却很少看到真正好用的 Next.js 开源项目?
react.js·node.js·next.js
吴声子夜歌3 小时前
MongoDB 8.0——安全性
数据库·mongodb
吴声子夜歌5 小时前
MongoDB 8.0——存储
数据库·mongodb
吴声子夜歌6 小时前
MongoDB 8.0——索引
数据库·mongodb
石小千8 小时前
排查MongoDB慢日志问题
数据库·mongodb
万亿少女的梦1689 小时前
基于微信小程序、Express与MongoDB的校园失物招领系统设计
mongodb·微信小程序·node.js·express·系统设计
AI行业学习9 小时前
Claude Code + cc-switch + Git + Node.js 一站式完整安装配置教程【8.3】
git·python·安全·前端框架·node.js·html·notepad++
AI行业学习9 小时前
Claude Code + cc-switch + Git + Node.js 一站式完整安装配置教程(2026最新·国内可用版)
人工智能·git·python·安全·node.js·html·notepad++
用户847181054191 天前
从0开始打造自己的个人智能体(一)——Deep Agents js环境配置与对话入门
node.js·agent
csdn杰哥1 天前
瑞萨单片机开发教程[二十七] DTC 外部中断触发传输实验
单片机·嵌入式硬件·mongodb·瑞萨·ra6m5