首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据嵌入值进行分组,并在mongodb中为其设置名称和总计数

如何根据嵌入值进行分组,并在mongodb中为其设置名称和总计数
EN

Stack Overflow用户
提问于 2020-08-17 10:35:03
回答 1查看 180关注 0票数 1

我的收藏:

样本收集Json结构:

代码语言:javascript
运行
复制
{ 
    "_id" : ObjectId("5f30df2ca032ecb2d14568bf"), 
    "value" : {
        "busId" : 100.0, 
        "status" : {
            "code" : {
                "id" : 1.0, 
                "key" : "2100", 
                "value" : "Complete"
            }
        }
    }
}

目标是为单个busID获取批准和拒绝的状态计数。

代码语言:javascript
运行
复制
db.suraj_coll.aggregate([
    {"$group" : {_id:{busId:"$value.busId",status:"$value.status.code.value"}, count:{$sum:1}}}
])

上面的查询返回输出(示例输出):

代码语言:javascript
运行
复制
{ 
    "_id" : {
        "busId" : 200.0, 
        "status" : "Cancel"
    }, 
    "count" : 2.0
}
{ 
    "_id" : {
        "busId" : 100.0, 
        "status" : "Accept"
    }, 
    "count" : 1.0
}
{ 
    "_id" : {
        "busId" : 100.0, 
        "status" : "Complete"
    }, 
    "count" : 2.0
}

但是,我想提出一个条件:每当它找到值$in(完全,接受)时,它就会将值更改为已批准的值,并使计数为3。我认为可以使用$cond (聚合)来完成它,但是发现更改名称也很困难,为了更具体,我希望输出如下:

代码语言:javascript
运行
复制
 { 
        "_id" : {
            "busId" : 200.0, 
            "status" : "Rejected"
        }, 
        "count" : 2.0
    }
    { 
        "_id" : {
            "busId" : 100.0, 
            "status" : "Approved"
        }, 
        "count" : 3
    }

因此,只要找到Accept/Complete,它就会增加计数的值/和,并根据已批准的名称存储。对于“取消”,则将值更改为“拒绝”。

任何建议/解决方案都会有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-17 10:53:29

太好了。您需要做的是,只需添加另一个字段,以确定它的批准与否,在分组之前,它将使您更容易。

代码语言:javascript
运行
复制
{
    $addFields: {
      "value.available": {
        $cond: [
          {
            $in: [
              "$value.status.code.value",
              [
                "Accept",
                "Complete"
              ]
            ]
          },
          "Approved",
          "Rejected"
        ]
      }
    }
  }

工作蒙戈游乐场

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63449129

复制
相关文章

相似问题

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