如何计算mongodb中的记录

时间:2017-08-19 06:37:52

标签: javascript node.js mongodb

我是mongodb的新手。 我有一个简单的电子邮件架构,实现如下:

const emailSchema = new Schema({
  from:{
    type: String
  },
  to: {
    type: String
  },
  subject: {
    type: String
  },
  content: {
    type: String
  },
  provider:{
    type: String
  },
  success:{
    type: Boolean
  }

现在我想查询所有电子邮件记录并将它们分成两个数组。一个用于provider=xprovider = y。然后计算每个success字段。 我怎么写这样的查询?

2 个答案:

答案 0 :(得分:2)

如果您只想计算成功率:对于任何提供商都是如此

emailSchema.aggregate([{
  $match: {
    { 'success': true }
  },
  $group: {
    _id: {
      provider: '$provider'
    }, //group by provider 
    count: {
      $sum: 1
    }
  } //sum of success fields
]);

如果您只想计算成功字段是否存在,则任何提供者

都可能是真或假
emailSchema.aggregate([{
  $match: {
    {'success': { $exists: true }}
  },
  $group: {
    _id: {
      provider: '$provider'
    }, //group by provider 
    count: {
      $sum: 1
    }
  } //sum of success fields
]);

答案 1 :(得分:1)

对组和计数使用聚合查询

emailSchema.aggregate([{
      $group: {
        _id: {
          provider: '$provider'
        }, //group by provider 
        count: {
          $sum: '$success'
        }
      } //sum of success fields
    ])