MongoDB 带日期时间显示的 $group "None"

MongoDB $group with datetime displays "None"

我开始学习使用 MongoDB 以及 Jupyter notebook 和 python 模块 Pymongo。

在我的一个文档中,我将数据存储如下:

{
  "_id" : ObjectId("60b78821d5a53a1f12336580"),
  "num_arete" : "0",
  "date" : ISODate("2020-01-01T07:01:00Z"),
  "nb_vehicules" : "32"
}

我想使用聚合,使文档集合中所有 nb_vehicules$sum 按日期分组.

这是我尝试过的方法:

passage_per_hour = collection_trafic.aggregate([{
    '$group': {
        '_id': '$date',
        'amount': { '$sum': {'$toInt' :'$nb_vehicules'}}
    }
}])

但是当我 运行 它在 notenook 中时,它不会执行分组并显示 $dateNone(见下文)。

有人知道为什么吗?

如果您想按日期汇总数据,则只需从时间戳中提取日期。因为它也会包含时间。

您可以使用以下聚合查询来实现。

passage_per_hour = collection_trafic.aggregate([{
    '$group': {
        '_id': { '$dateToString': { 'format': "%Y-%m-%d", 'date': '$date' } },
        'amount': { '$sum': {'$toInt' :'$nb_vehicules'}}
    }
}])

编辑:

过滤掉日期的空值

passage_per_hour = collection_trafic.aggregate([
{ 
   '$match':{
        'date':{"$exists":true}
   }
},
{
   '$group': {
       '_id': { '$dateToString': { 'format': "%Y-%m-%d", 'date': '$date' } },
       'amount': { '$sum': {'$toInt' :'$nb_vehicules'}}
    }
}])