mongdb系列之 aggregate展示未被分组的字段

最近遇到一个需求 查询mongdb 根据title字段分组 标题相同的统计数量 同时其他相关的字段也要展示.类似这样的sql

SELECT id,title , synopsis ,news_url ,COUNT(1) from crawl_news_info  GROUP BY title LIMIT 10 

网上搜到的最多的就是最简单的显示的字段 分组的字段  和 操作符的字段 例如

 

db.getCollection('baiduNewsSynopsisDto').aggregate([
{$match :{isShowMain:1}},

{$group:{_id:{title:'$title'}, count:{'$sum':1}}},

{$project:{_id:0,'title':'$_id.title',count:'$count'}}

])

相当于sql  SELECT title , COUNT(1) from crawl_news_info  GROUP BY title LIMIT 10 但是如果要展示其他的字段就没有办法了

冥冥之中让我发现了一个 $first   没错她来了 就是她  意思就是她的字面意思 取第一个,用法如下

db.getCollection('baiduNewsSynopsisDto').aggregate([
{$match :{isShowMain:1,isShow:1,mediaType:2,baseMonitorMainId:880}},

{$group:{_id:{title:'$title'}, count:{'$sum':1},newsUrl:{$first:'$newsUrl'},synopsis:{$first:'$synopsis'},source:{$first:'$source'}}},

{$project:{_id:0,'title':'$_id.title',count:'$count',newsUrl:'$newsUrl',synopsis:'$synopsis',source:'$source'}},

{$sort:{newsIssueTime:-1}},
{$skip:3},
{$limit:2}
])

希望可以对看到文章的朋友有所帮助

欢迎大家关注我的微信公众号 您的关注就是我不懈的动力

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值