如何解决用户按组汇总Mongo批准的帖子
我有3张桌子
文章,页面和用户
用户有几篇文章,一篇文章属于某个页面和特定的页面类型。如何返回每个用户每种页面类型的文章数?
例如:
约翰
3篇A型文章
5条B型文章
{
$match: {
project_id : ObjectId("5d9604074dc1e055a83520e9"),moderator_id : {$ne: null},created: {
$gt: ISODate("2020-09-01T00:00:00-03:00"),$lt: ISODate("2020-10-30T00:00:00-03:00")
}
}
},{
$lookup: {
from : "pages",localField : "page_id",foreignField : "_id",as : "pages"
}
},{
$lookup: {
from : "users",localField : "moderator_id",as : "users"
}
}
{
"$group" : {
_id : "$moderator_id",data : {
$first : {
name : "$users.name",blogCount : { $sum : { $cond : { if: { $eq : [ "$pages.type","blog" ] },then : 1,else : 0 } } },subBlogCount : { $sum : { $cond : { if: { $eq : [ "$pages.type","sub-blog" ] },subBlogCourseCount : { $sum : { $cond : { if: { $eq : [ "$pages.type","sub-blog-course" ] },}
},count : {$sum:1}
}
}
])
解决方法
这是问题的答案,希望它能对其他人有所帮助。
{
$match : {
project_id : ObjectId("5d9604074dc1e055a83520e9"),moderator_id : {$ne: null},created: {
$gt: ISODate("2020-09-01T00:00:00-03:00"),$lt: ISODate("2020-10-30T00:00:00-03:00")
}
}
},{
$lookup : {
from : "pages",localField : "page_id",foreignField : "_id",as : "pages"
}
},{
$unwind : "$pages"
},{
$lookup : {
from : "users",localField : "moderator_id",as : "users"
}
},{
$unwind : "$users"
},{
$project : {
_id: 0,moderator_id : "$moderator_id",name : "$users.name",type : "$pages.type",blog : { $cond : { if: { $eq: ["$pages.type","blog"] },then: 1,else: 0 } },subBlog : { $cond : { if: { $eq: ["$pages.type","sub-blog"] },subBlogCourse : { $cond : { if: { $eq: ["$pages.type","sub-blog-course"] },}
},{
"$group" : {
_id : "$moderator_id",moderator_name : { $first : "$name" },blogCount : { $sum : "$blog" },subBlogCount : { $sum : "$subBlog" },subBlogCourseCount : { $sum : "subBlogCourse" },}
}
])```
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。