Mongo 时区聚合

mal*_*ney 5 scala mongodb mongodb-query

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

例如,假设我有3条具有createdDate2017-03-27 13:00:002017-03-28 00:30:002017-03-28 13:00:00我期望的聚集,1组记录27/3和2记录28/3。但是,因为第二条记录以 UTC2017-03-27 23:30:00格式存储在数据库中,作为聚合组 27/3 的 2 条记录和 28/3 的仅 1 条记录。

这是聚合查询:

{ "$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}
}}
Run Code Online (Sandbox Code Playgroud)

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

Ish*_*arg 0

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

let say it as tzOffset->
Run Code Online (Sandbox Code Playgroud)

var tzOffset = 2;

then use in aggregate this way to get user result
Run Code Online (Sandbox Code Playgroud)

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

then do the comparison.
Run Code Online (Sandbox Code Playgroud)