如何通过对猫鼬进行分组来返回两个匹配条件的计数值?

编程入门 行业动态 更新时间:2024-10-12 05:54:54

如何通过对猫鼬进行分组来返回两个匹配条件的计<a href=https://www.elefans.com/category/jswz/34/1770286.html style=数值?"/>

如何通过对猫鼬进行分组来返回两个匹配条件的计数值?

我希望我的输出json如下所示,

[ {
        "_id": "IT",
        "count 1": 1,
        "count 2": 1,

    },
    {
        "_id": "CSE",
        "count1": 1,
        "count2": 2,

    },


]

我在猫鼬中尝试了以下查询

{
            $match: {


                riskstatus: { $in: ["Closed", "Deffered"] },
                riskstatus: { $in: [ "Open"] },
            }
        },

        {

            "$group": {
                "_id": "$phase",
                "count1": { "$sum": 1 },
               "count2": { "$sum": 1 },

            },

        }


我的输入集合为{“ _id”:“ 5df5ca73bb1c4526948e2421”,“评论”:“测试”,“状态”:“打开”,“阶段”:“ CSE”},{“ _id”:“ 5df5ca73bb1c4526948e2422”,“ comment“:” test“,” status“:” closed“,” phase“:” IT“} {” _id“:” 5df5ca73bb1c4526948e2422“,” comment“:” test“,” status“:” Closed“,” phase “:” CSE“} {” _id“:” 5df5ca73bb1c4526948e2422“,”评论“:”测试“,”状态“:”打开“,”阶段“:” IT“}{“ _id”:“ 5df5ca73bb1c4526948e2422”,“评论”:“测试”,“状态”:“打开”,“阶段”:“ CSE”} –

如何在具有上述匹配条件的情况下为同一组检索两个计数值以实现此结果?

我最近尝试过的是

Risk.aggregate([
        { $match: { $or: [ { status: {$in: ["Closed", "Deffered"]} }, { status: {$in: ["Open"] } } ] } },


        {

            "$group": {
                "_id": "$phase",
                " count1": { "$sum": 1 },
                "count2": { "$sum": 1 },

            },

        }
回答如下:

请使用该查询

     db.posts.aggregate(
    {
        $group: {
            _id: { 'id': '$phase', 'status': '$status' },
            count_1: { '$sum': 1 },
        }
    },
    { $project: { '_id': 0, 'depart': '$_id.id', 'status': '$_id.status', 'count_1': 1 } }
    , {
        $group: {
            _id: '$depart',
            data: {
                '$push': {
                    'depart': '$depart',
                    'count_1': {
                        $cond: [{ $eq: ["$status", 'Open'] }, '$count_1', 0]
                    },
                    'count_2': {
                        $cond: [{ $eq: ["$status", 'Closed'] }, '$count_1', 0]
                    }
                    ,
                    'count_3': {
                        $cond: [{ $eq: ["$status", 'Deffered'] }, '$count_1', 0]
                    }

                },
            }
        }
    },
      { $project: 
      {'name':'$_id','_id':0, 
      openCount: { $max: "$data.count_1"}, 
      Othercount: {  
          $add:[ 
              {$max: "$data.count_2"},
              {$max: "$data.count_3"}]

      } 

      }}

)

更多推荐

如何通过对猫鼬进行分组来返回两个匹配条件的计数值?

本文发布于:2024-05-06 23:02:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1753929.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数值   条件   两个

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!