gpt4 book ai didi

mongodb - Mongo 时区聚合

转载 作者:行者123 更新时间:2023-12-03 17:38:16 34 4
gpt4 key购买 nike

有没有办法在运行 mongo 查询时考虑时区?我们有一个问题,由于时钟已经向前(到 BST),我们的 mongo 聚合查询没有按预期对记录进行分组。

例如,假设我有 3 条记录,带有 createdDate2017-03-27 13:00:00 , 2017-03-28 00:30:00 , 和 2017-03-28 13:00:00我希望聚合将 27/3 的 1 条记录和 28/3 的 2 条记录分组。但是,因为第二条记录以 UTC 格式存储在数据库中为 2017-03-27 23:30:00聚合组 2 条记录用于 27/3,只有 1 条记录用于 28/3。

这是聚合查询:

{ "$match" : { "$and" : [ 
{ "createdDate" : { "$gte" : { "$date" : {ISODATE}} ,
"$lte" : { "$date" : {ISODATE}}}
]}},
{ "$group" : { "_id" : { "_id" : "$id" ,
"createdDate" : {
"year" : { "$year" : "$createdDate"} ,
"month" : { "$month" : "$createdDate"} ,
"day" : { "$dayOfMonth" : "$createdDate"}}} ,
"count" : { "$sum" : 1}
}}

任何想法如何解决这个问题?

最佳答案

To get the date according to user requirement get the offset from frontend

let say it as tzOffset->

var tzOffset = 2;

then use in aggregate this way to get user result

{"$add": [{ "$subtract": [ "$date", new Date("1970-01-01") ]},tzOffset * 1000 * 60 * 60]}

then do the comparison.

关于mongodb - Mongo 时区聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43115528/

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