【发布时间】:2018-10-25 10:17:27
【问题描述】:
您好,我想将我的 sql 查询更改为 mongo 聚合。
select c.year, c.minor_category, count(c.minor_category) from Crime as c
group by c.year, c.minor_category having c.minor_category = (
Select cc.minor_category from Crime as cc where cc.year=c.year group by
cc.minor_category order by count(*) desc, cc.minor_category limit 1)
我试着做这样的事情:
db.crimes.aggregate({
$group: {
"_id": {
year: "$year",
minor_category :"$minor_category",
count: {$sum: "$minor_category"}
}
},
},
{
$match : {
minor_category: ?
}
})
但我卡在 $match 中,这相当于拥有,但我不知道如何像在我的 sql 查询中那样在 mongo 中进行子查询。
谁能帮帮我?
【问题讨论】:
-
从 SQL 查询看来,给定年份有很多 minor_category,而子查询正在获取特定年份中计数最高的 minor_category。所以最后,输出是每年获得最高计数的minor_category。请确认我的理解是否正确?
-
@mintekhab 正是它!
-
@MateuszZ 回答如下。查询有点大,适合评论部分。
标签: mongodb mongodb-query aggregation-framework aggregate