首页 > 解决方案 > 如何根据MongoDB中的不同条件计算行数?

问题描述

我在 MongoDB 中有一个包含年龄列的集合,是否可以在一个查询中计算年龄列低于例如 10、介于 10 和 30 之间以及高于 30 的行数?即输出是这样的:

age             cnt
<=10            607
10< and < 30    304
>=30            405

标签: mongodb

解决方案


(我发布的答案可能对某人有帮助!)正如 prasad_ 所说,您可以通过使用

db.getCollection("users").aggregate([
    {
        $project: {
            item: 1,
            lessThan10: {  
                $cond: [ { $lt: ["$dob.age", 10 ] }, 1, 0]
            },
            moreThan10lessThan30: {  
                $cond: [ { $and: [ { $gte: ["$dob.age", 10 ] }, { $lte: ["$dob.age", 30 ] } ] }, 1, 0]
            },
            morethan30:{
                $cond: [{ $gt: ["$dob.age", 30]}, 1, 0]
            }


        }
    },
    {
        $group: {
            _id: "$item",
            lessthan10: { $sum: "$lessThan10" },
            between10and30: { $sum: "$moreThan10lessThan30" },
            morethan30:{$sum:"$morethan30"}

        }
    }
])

推荐阅读