【问题标题】:How to get Count of records Group By field value in mongoDB?如何在mongoDB中获取记录计数分组字段值?
【发布时间】:2018-12-11 12:18:00
【问题描述】:

我想按组字段(国家/地区)值获取记录总数,我正在尝试但没有得到它。下面是我的代码:-

var company_id= company._id
 FollowCompany.aggregate(
      [   
          {
            $match: { company_id :company_id }  // company_id field in database and user param
          },
          {
              $group:
              {
                  _id: "$country" ,   // need to group by country in database
                  count: { $sum:1 },

              }
          },
          { $sort : { entry_date : -1 } },
      ]).exec(function(err, followerData) {
        console.log(followerData)

      })

它显示空结果,有什么帮助或想法吗?提前致谢

【问题讨论】:

  • 你在用猫鼬吗? company_id 的类型是什么?字符串或对象ID
  • @AnthonyWinzlet,其 id 存储在数据库中并从用户输入中获取相同的 ID
  • @AnthonyWinzlet,是的,我也编辑了代码
  • 将其转换为 ObjectId。 { $match: { company_id :mongoose.Types.ObjectId(company_id) } }
  • @AnthonyWinzlet,在使用 $match 工作正常时,它给了我结果,我想按字段、国家/地区对数据进行分组。

标签: mongodb group-by mongodb-query


【解决方案1】:

我找到了解决方案,现在我想将 _id 字段显示为国家,任何解决方案,下面是我的代码:

 FollowCompany.aggregate(
      [   
          {
            $match: {company_id:""+company_id+""}
          },
          {
              $group:
              {
                  _id: "$country" , 
                  count: { $sum:1 },

              }
          },
          { $sort : { _id : 1 } },
      ])

输出是

 {
        "_id": "India",
        "count": 1
    }

我想要这样

 {
        "country": "India",
        "count": 1
    }

【讨论】:

  • 最后使用$project 阶段。类似{ "$project": { "country": "$_id", "count": 1, "_id": 0 }}
  • @AnthonyWinzlet,非常感谢,它可以工作,因为我将 company_id 作为字符串传递,还有其他方法可以转换这个字符串吗?
猜你喜欢
  • 2020-11-25
  • 2017-04-06
  • 1970-01-01
  • 2021-12-10
  • 1970-01-01
  • 2021-11-09
  • 2020-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多