大型数据集和团队绩效

时间:2019-06-22 09:28:31

标签: mongodb aggregate

我目前正在使用庞大的MongoDB数据库(2M5记录),并且在改善查询方面有些困难。

这是我的查询:

db.getCollection('visitors').aggregate([
  {
    "$match": {
      "createdAt": {
        "$gte": ISODate("2019-01-31T23:00:00.000Z"),
        "$lte": ISODate("2019-06-22T21:59:00.000Z")
      }
    }
  },
  {
    "$group": {
      "_id": "$offer",
      "visits": {
        "$sum": 1
      },
      "eventsCount": {
        "$sum": "$eventsTotal"
      },
      "revenuesCount": {
        "$sum": "$conversionsCount"
      },
      "revenues": {
        "$sum": "$conversionsTotal"
      }
    }
  },
  {
    "$project": {
      "_id": 0,
      "visits": 1,
      "eventsCount": 1,
      "revenuesCount": 1,
      "revenues": 1,
      "id_offer": "$_id"
    }
  },
  {
    "$sort": {
      "visits": -1
    }
  },
  {
    "$skip": 0
  },
  {
    "$limit": 20
  }
],{
    "allowDiskUse": true,
  })

当前,此查询需要38秒才能完成,而且时间太长,我需要减少此延迟。

我也将index用于createdAt属性和Offer。

因此,如果您有一些改进的建议,建议或其他建议!谢谢!

我的服务器配置:

  • RAM:32Go(允许20Go进入MongoDB)
  • 处理器:8V核心
  • 磁盘空间:200Gb

0 个答案:

没有答案