gpt4 book ai didi

mongodb - 如何在不同时区按年月日汇总

转载 作者:IT老高 更新时间:2023-10-28 13:04:45 31 4
gpt4 key购买 nike

我有一个 MongoDB,它以 UTC 存储日期对象。好吧,我想在不同的时区 (CET) 中按年月日进行聚合。

这样做,适用于 UTC:

    BasicDBObject group_id = new BasicDBObject("_id", new BasicDBObject("year", new BasicDBObject("$year", "$tDate")).
append("month", new BasicDBObject("$month", "$tDate")).
append("day", new BasicDBObject("$dayOfMonth", "$tDate")).
append("customer", "$customer"));

BasicDBObject groupFields = group_id.
append("eventCnt", new BasicDBObject("$sum", "$eventCnt"));

BasicDBObject group = new BasicDBObject("$group", groupFields);

或者,如果你使用命令行(未测试,我只测试了java版本):

{
$group: {
_id: {
"year": {
"$year", "$tDate"
},
"month": {
"$month", "$tDate"
},
"day": {
"$dayOfMonth", "$tDate"
},
"customer": "$customer"
},
"eventCount": {
"$sum": "$eventCount"
}
}
}

如何在聚合框架内将这些日期转换为 CET?

例如,“2013-09-16 23:45:00 UTC”是“2013-09-17 00:45:00 CET”,这是不同的日子。

最佳答案

我不是 CET 及其与 UTC 关系方面的专家,但以下代码(用于 shell)应该对 MongoDB 日期类型进行适当的转换(增加一个小时):

db.dates.aggregate(
{$project: {"tDate":{$add: ["$tDate", 60*60*1000]}, "eventCount":1, "customer":1}}
)

如果您在管道的其余部分之前运行该项目命令,则结果应该在 CET 中。

关于mongodb - 如何在不同时区按年月日汇总,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18852095/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com