mal*_*ney 5 scala mongodb mongodb-query
有没有办法在运行 mongo 查询时考虑时区?我们有一个问题,因为时钟已经前进(到 BST),我们的 mongo 聚合查询没有按预期对记录进行分组。
例如,假设我有3条具有createdDate的2017-03-27 13:00:00,2017-03-28 00:30:00和2017-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)
任何想法如何解决这个问题?
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)
| 归档时间: |
|
| 查看次数: |
467 次 |
| 最近记录: |