首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongo DB -使用聚合获得组状态和总计数

Mongo DB -使用聚合获得组状态和总计数
EN

Stack Overflow用户
提问于 2017-12-27 17:37:31
回答 1查看 1.1K关注 0票数 0

我创建了一个集合帖子,并添加了如下所示的文档。

代码语言:javascript
复制
[{
    "title" : "MongoDB-Overview", 
    "status" : "created",
    "postBy" : "sukesh"
}, {
    "title" : "MongoDB-Collection", 
    "status" : "created",
    "postBy" : "sukesh"
}, {
    "title" : "MongoDB-Document", 
    "status" : "approved",
    "postBy" : "sukesh"
}, {
    "title" : "MongoDB-Database", 
    "status" : "approved_pending",
    "postBy" : "ramesh"
}, {
    "title" : "MongoDB-Query", 
    "status" : "deleted",
    "postBy" : "suresh"
}]

我需要使用聚合函数来计算,

  1. 分配给特定人员的职位总数(此处仅为sukesh),以及
  2. 总状态计数,如果状态未分配,则返回0。 就像下面。
代码语言:javascript
复制
{
   "postby": "sukesh"
   "totalPost": 4,
   "status": {
      "created": 2
      "approved": 1,
      "approved_pending": 0,
      "deleted": 1
    }       
}

请帮我找到解决办法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-27 18:36:50

我不认为这完全是你想要的,但你可以尝试一下,如果你能用这个:

代码语言:javascript
复制
db.collection.aggregate([
{
  $group: {
    _id: "$postBy",
    count: { $sum: 1},
    status: { $push: "$status"}
  }
},
{ $unwind: "$status"},
{
  $group: {
    _id: { "postby": "$_id", status: "$status" },
    scount: { $sum: 1},
    count: {$first: "$count"}
  }
}, 
{$group: {
        _id: "$_id.postby",  
        total: {$first: "$count"},
        status: {$push:  { type: "$_id.status", count: "$scount" }},
}},
{
  $project: {
    _id: 0,
    postby: "$_id",
    totalPost: "$total",
    status: 1
  } 
}
])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47996384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档