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

发布于:2025-05-21 ⋅ 阅读:(15) ⋅ 点赞:(0)


前言

Mongo 聚合查询

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


一、工具

一般使用mongo查询,我用两个工具,分别是官网指定工具 MongoDB CompassStudio 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 here
                builtin: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查询语句,并且可以直接粘贴代码
复制代码


网站公告

今日签到

点亮在社区的每一天
去签到