我有一個MongoDB分析樣式的集合。它包含帶有timestamp
字段和各種數據的文檔。現在我想通過一個粒度參數來獲得一段時間的文檔數量。MongoDB聚合:具有粒度的時間序列
我目前使用這樣的聚合框架(假設粒度DAY
):
db.collection.aggregate([{
$match: {
timestamp: {
$gte: start_time,
$lt: end_time
}
}
}, {
$group: {
_id: {
year: { $year: '$timestamp' },
month: { $month: '$timestamp' },
day: { $dayOfMonth: '$timestamp' }
},
count: { $sum: 1 }
}
}, {
$sort: {
_id: 1
}
}])
這樣,我有每天count
值。 問題是count
將取決於計算$dayOfMonth
部分時使用的時區(每個count
從00:00:000 UTC到UTC:23:59:999)。
我希望能夠實現這一點,而不依賴於時區,但依靠start_time
。例如,如果我在UTC時間07:00使用start_time
,則我將在UTC時間07:00到第二天07:00 UTC的每一天獲得count
s。
TL; DR:我想是這樣的:https://dev.twitter.com/ads/reference/get/stats/accounts/%3Aaccount_id/campaigns
關於如何執行此任何想法?
不知道我明白你的意思取決於時間戳。 Mongo將所有日期存儲爲UTC,因此所有內容都位於同一時區。 –
日期存儲爲UTC,因此如果使用$ dayOfMonth聚合運算符,則會獲得UTC日期。現在,如果你想在不同的時區dayOfMonth,你不能。 更一般地說,我想獲得24小時間隔的計數值(不依賴於任何時區,例如從昨天凌晨1:30到今天凌晨1:30)。 – Owumaro