基于MongoDB中的日期字段进行计数和汇总

时间:2018-08-30 22:56:41

标签: python mongodb aggregation-framework

我正在使用Python和MongoDB构建应用程序。我想添加一个新集合,其中包含有关我一直在收集的数据的一些统计信息。我已经能够使用查询使它发挥作用,但是似乎我应该能够将这项工作分担到Aggregation Framework上。

以下是我的文档的示例:

foundFile = {
    "_id": ObjectID("5b81abb7bc1e7479981a042f")
    "fileType": ".ico",
    "timeStamp": 1535659134,  # unix timestamp
    "size": 929191            # size in bytes
}

我想知道两件事:

  • 过去24小时内添加了多少种唯一的文件类型及其识别字符串(例如32 .ico,101 .png等)
  • 每个文件类型的总大小

这是Aggregate Framework的优点吗?还是应该坚持查询?

感谢阅读。

更新

对于像我这样刚开始使用Aggregation Framework的任何人,MongoDB Compass的收集页面上都有一个选项卡,可帮助您构建聚合并将其导出为所需的语言,我发现,这种语言对确定聚合非常有帮助。找出为什么我的查询不起作用。

1 个答案:

答案 0 :(得分:2)

您可以使用以下汇总。

db.colname.aggregate([
  {"$match":{"timeStamp":{"$gte":time24hoursago,"$lte":currenttime}}},
  {"$group":{
    "_id":"$fileType",
    "ucount":{"$sum":1},
    "asize":{"$sum":"$size"}
  }}
])