Aggregate
首先肯定是使用Mongo的Aggregate方法
collectModel.aggregate()
具体细节
因为前面最基础的大家肯定都会,现在就试着先从表A查询某些数据,再把某些数据从表B查询填充。
- $match
match可以看做是find时候的查询条件,可以先从表A查询到数据
{
$match : { _id:"123456"}
}
- $lookup
这个命令就是从另一个表查询数据
{
$lookup:{ from: "aaa", localField: "Id", foreignField: "_id", as: "Info" }
},
就是从表A查询Id字段与表aaa的_id字段匹配,查询的结果集是Info
- $unwind
因为聚合查询所有的结果都是数组的形式,unwind其实就是把唯一值展开成对象
{
$unwind:"$Info"
}
必须加$符号以表示这个是变量
4. $project
就是SQL里面的select命令
{
$project:{filename:"$filename"}
}
这样结果就只有filename了,要什么加什么。
- $group
聚合查询
{
$group:{
_id:"$filename",
detail:{
$addToSet:"$$ROOT",
}}
},
根据filename分组 其中ROOT是指把所有东西都放到detail里面
5.$limit
{
$limit: Number(cond.limit)
},
和正常的limit用法是一样的。
最后这些东西放在开头的数组里面执行即可。