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

MongoDB聚合查询:从入门到精通

文章目录

  • 前言
  • 一、工具
      • 一般聚合查询分为四步
  • 二、使用步骤
    • 1.MongoDB Compass
    • 2.Studio 3T
  • 二、举个栗子
  • 总结


前言

Mongo 聚合查询

一般用mongo做数据库,涉及到关联查询情况不多,但是还有些情况要使用到,今天就讲下如何通过工具做关联查询,最终聚合结果,得到最终的查询结果集;


一、工具

一般使用mongo查询,我用两个工具,分别是官网指定工具 MongoDB Compass 和 Studio 3T
下面我将介绍在这两种工具中如何做关联查询 聚合结果

一般聚合查询分为四步

  • 当前表的查询条件: $math
  • 关联表与当前的关联信息: 关联表 关联字段 当前字段 关联表查询结果 $lookup
  • 结构关联表查询结果: 默认为集合,需要结构为单个对象 $unwind
  • 讲当前表和结构的关联查询结果属性拼接 $porject

这就得到了一个最终想要的结果

二、使用步骤

1.MongoDB Compass

  1. 连接好mongo 数据库
  2. 选中集合
  3. 点击聚合: Aggregations
  4. 点击添加 Add Stage
    增加聚合查询条件
    每次添加应该加的Stage类型,按照顺序添加,并设置查询条件即可

2.Studio 3T

  1. 连接好mongo 数据库
  2. 选中集合
  3. 点击聚合: Aggregations
  4. 点击添加 Add Stage
    增加聚合查询条件

二、举个栗子

我想查询购买记录,然后关联查询出用户信息,返回用户名称

  • 类似的sql如下
select address.*,user.username
form address left join user on user.id= address.publish_by
where address.publish = 1
  • 开始操作,以Studio 3T为例
    分别增加查询条件
db.getCollection("address").aggregate(// Pipeline[// Stage 1{$match: {// enter query herebuiltin:0}},// Stage 2{$lookup: {from: "user",localField: "publishBy",foreignField: "phone",as: "users"}},// Stage 3{$lookup: {from: "conversation",localField: "code",foreignField: "code",as: "conversations"}},// Stage 4{$unwind: {path: "$users"}},// Stage 5{$project: {// specifications"name":"$name","code":"$code","username":"$users.username","count":{$size:"$conversations"}}}],// Options{}// Created with Studio 3T, the IDE for MongoDB - https://studio3t.com/);

总结

初次之外,Studio 3T还有一个功能,那就是通过sql 直接生成 mongo查询语句,并且可以直接粘贴代码
复制代码

相关文章:

  • 实例化异常(InstantiationException)详解
  • (面试)View相关知识
  • STM32F103定时器1每毫秒中断一次
  • 如何 naive UI n-data-table 改变行移动光标背景色
  • Web3开发工具与框架全解析:从入门到实战
  • 角点特征:从传统算法到深度学习算法演进
  • 深度学习中独热编码(One-Hot Encoding)
  • 国内AWS CloudFront与S3私有桶集成指南:安全访问静态内容
  • MUSE Pi Pro 开发板 Imagination GPU 利用 OpenCL 测试
  • Python异常模块和包
  • 【Ragflow】22.RagflowPlus(v0.3.0):用户会话管理/文件类型拓展/诸多优化更新
  • python四则运算计算器
  • HarmonyOS NEXT~鸿蒙应用上架指南:HarmonyOS应用发布全流程解析
  • ABP vNext 多租户开发实战指南
  • Docker入门指南:镜像、容器与仓库的核心概念解析
  • Vue.js 教学第三章:模板语法精讲,插值与 v-bind 指令
  • 阿里云国际站与国内站的核心布局与本土化服务的选择
  • 人工智能-自然语言与语音产品实现
  • 【学习心得】英伟达的诸多显卡性能对比
  • 局部放大maya的视图HUD文字大小的方法
  • 蔡建忠已任昆山市副市长、市公安局局长
  • 习近平就乌拉圭前总统穆希卡逝世向乌拉圭总统奥尔西致唁电
  • 新城悦服务:独董许新民辞任,新任独董与另两人组成调查委员会将调查与关联方资金往来
  • 媒体:“重病老人银行取款身亡”涉事家属称已和解,银行将支付十万
  • 日本一季度实际GDP环比下降0.2%
  • 牛市早报|持续推进城市更新行动意见印发,证监会强化上市公司募资监管