我已经查看了可能的重复项,但是没有找到。我有一个MongoDB集合结构,如下所示:
[
{eui: 'abcd', date: '2023/01/23, 9:36 AM', temperature: 4.7},
{eui: 'abcd', date: '2023/01/23, 8:31 AM', temperature: 14.3},
{eui: 'abcd', date: '2023/01/22, 5:36 PM', temperature: 6.2},
{eui: 'abcd', date: '2023/01/22, 3:36 PM', temperature: 5.0},
{eui: 'fght', date: '2023/01/23, 9:36 AM', temperature: 4.9},
{eui: 'fght', date: '2023/01/23, 8:31 AM', temperature: 1.7},
{eui: 'fght', date: '2023/01/23, 5:36 AM', temperature: 2.8}
]
我需要按eui
和天对文档进行分组(因此要聚合同一天的每个小时),此外,文档必须包含每天的最高温度、最低温度和平均温度。
所需输出为:
[
{eui: 'abcd', date: '2023/01/23', min_t: 4.7, max_t:14.3 , avg_t: 9.5},
{eui: 'abcd', date: '2023/01/22', min_t: 5.0, max_t: 6.2, avg_t: 5.6},
{eui: 'fght', date: '2023/01/23', min_t: 1.7, max_t: 4.9, avg_t: 3.1},
]
等等。所以我需要为每一天/eui对创建一个文档。
我试过了
db.temperatures.aggregate([
{$match: {eui: "C0EE400001030C5F"}},
{"$group": {
"_id": { '$dateToString': { 'format': "%Y-%m-%d", 'date': "$date", }},
"avg_temperature": {"$avg": "$temperature" },
"min_temperature": {"$min": "$temperature" },
"max_temperature": {"$max": "$temperature" },
}
},
{"$sort": { "_id":-1 }}
])
并且我成功地按天分组,但是我正在匹配特定的eui,并且我不能管理按eui分组。
PS我正在使用PyMongo,因此我很想获得在Python Package 器中工作的东西。
谢谢。
1条答案
按热度按时间8gsdolmq1#
可以按
date
和eui
分组。Demo @ Mongo Playground