MongoDB 聚合查询详解
admin
2024-03-08 14:05:03

Aggregate

首先肯定是使用Mongo的Aggregate方法
collectModel.aggregate()

具体细节

因为前面最基础的大家肯定都会,现在就试着先从表A查询某些数据,再把某些数据从表B查询填充。

  1. $match

match可以看做是find时候的查询条件,可以先从表A查询到数据

{
$match : { _id:"123456"}
}
  1. $lookup
    这个命令就是从另一个表查询数据
{$lookup:{ from: "aaa", localField: "Id", foreignField: "_id", as: "Info" }},

就是从表A查询Id字段与表aaa的_id字段匹配,查询的结果集是Info

  1. $unwind
    因为聚合查询所有的结果都是数组的形式,unwind其实就是把唯一值展开成对象
{
$unwind:"$Info"
}

必须加$符号以表示这个是变量
4. $project
就是SQL里面的select命令

{
$project:{filename:"$filename"}
}

这样结果就只有filename了,要什么加什么。

  1. $group

聚合查询

{$group:{_id:"$filename",detail:{$addToSet:"$$ROOT",}}},

根据filename分组 其中ROOT是指把所有东西都放到detail里面

5.$limit

{$limit: Number(cond.limit)},

和正常的limit用法是一样的。

最后这些东西放在开头的数组里面执行即可。

相关内容

热门资讯

亚威股份涨2.48%,成交额3... 1月16日,亚威股份涨2.48%,成交额3.97亿元,换手率7.45%,总市值58.99亿元。异动分...
浙江建投跌0.34%,成交额1... 1月16日,浙江建投跌0.34%,成交额1.17亿元,换手率1.24%,总市值93.79亿元。异动分...
福斯特涨0.63%,成交额3.... 1月16日,福斯特涨0.63%,成交额3.51亿元,换手率0.95%,总市值372.27亿元。异动分...
美亚光电涨0.45%,成交额1... 1月16日,美亚光电涨0.45%,成交额1.31亿元,换手率1.36%,总市值194.88亿元。异动...
立中集团涨0.58%,成交额3... 1月16日,立中集团涨0.58%,成交额3.26亿元,换手率2.24%,总市值166.80亿元。异动...