为了账号安全,请及时绑定邮箱和手机立即绑定

MongoDB SELECT COUNT GROUP BY

MongoDB SELECT COUNT GROUP BY

PIPIONE 2019-09-20 17:18:03
我正在玩MongoDB试图弄清楚如何做一个简单的事情SELECT province, COUNT(*) FROM contest GROUP BY province但我似乎无法使用聚合函数来解决它。我可以使用一些非常奇怪的组语法来做到这一点db.user.group({    "key": {        "province": true    },    "initial": {        "count": 0    },    "reduce": function(obj, prev) {        if (true != null) if (true instanceof Array) prev.count += true.length;        else prev.count++;    }});但是使用聚合函数有更简单/更快的方法吗?
查看完整描述

3 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

这将是使用aggregate以下方法更简单的方法:


db.contest.aggregate([

    {"$group" : {_id:"$province", count:{$sum:1}}}

])


查看完整回答
反对 回复 2019-09-20
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

如果需要多个列进行分组,请遵循此模型。在这里,我通过进行计数status和type:


  db.BusinessProcess.aggregate({

    "$group": {

        _id: {

            status: "$status",

            type: "$type"

        },

        count: {

            $sum: 1

        }

    }

   })


查看完整回答
反对 回复 2019-09-20
?
开满天机

TA贡献1786条经验 获得超12个赞

我需要一些基于聚合函数结果的额外操作。最后,我找到了一些基于MongoDB结果的聚合函数和操作的解决方案。我收藏Request了一个字段request, source, status, requestDate。


单场组By&Count:


db.Request.aggregate([

    {"$group" : {_id:"$source", count:{$sum:1}}}

])

多个字段分组依据和计数:


db.Request.aggregate([

    {"$group" : {_id:{source:"$source",status:"$status"}, count:{$sum:1}}}

])

多个字段分组依据和计数使用字段排序:


db.Request.aggregate([

    {"$group" : {_id:{source:"$source",status:"$status"}, count:{$sum:1}}},

    {$sort:{"_id.source":1}}

])

多个字段按&计数使用排序使用计数:


db.Request.aggregate([

    {"$group" : {_id:{source:"$source",status:"$status"}, count:{$sum:1}}},

    {$sort:{"count":-1}}

])


查看完整回答
反对 回复 2019-09-20
  • 3 回答
  • 0 关注
  • 770 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信