首页 > 解决方案 > 使用单独的过滤器对数据进行分组(MongoDB 查询)

问题描述

我正在尝试创建一个查询,该查询基本上每天将 GROUP 和 COUNT 男性和女性性别。mongodb 查询将在 jaspersoft studio 中使用 mongodb 适配器执行。

我的主要问题是查询如何使用 $group 计算每天有多少男性和女性。我希望有人可以帮助我解决这个问题。先感谢您

{
runCommand: {
    aggregate: "visit",
    pipeline: [



{ $lookup: { from: 'person', localField: 'personuid', foreignField: '_id', as: 'person' } },
{ $unwind: { path: '$person', preserveNullAndEmptyArrays: true } },




       {
     $project: {
                _id:{
                    
                   "visit":"$id",
                    "visitdate":"$visitdate"
                    "genderuid": "$person.genderuid"
                    }

  }
},


{ $lookup: { from: 'referencevalues', localField: '_id.genderuid', foreignField: '_id', as: 'gender' } },
{ $unwind: { path: '$gender', preserveNullAndEmptyArrays: true } },

    {
 $group: {

                
            "visit_date": "$_id.visitdate"
            "gender": "$gender.valuedescription",
                
}
  }



],
"cursor":{
batchSize: 100000
}
}
}

标签: mongodbmongodb-query

解决方案


您可以将 sum 与条件一起使用。

Male: {$sum: {
        $cond: [
            { $eq: [ '$gender.value', 1 ] }
            1,
            0
        ]
    }
},
Female: {$sum: {
        $cond: [
            { $eq: ['$gender.value', 0 ] }
            1,
            0
        ]
    }
}

推荐阅读