【问题标题】:$dayOfWeek and timezone in MongoDB aggregationMongoDB 聚合中的 $dayOfWeek 和时区
【发布时间】:2016-12-22 08:45:27
【问题描述】:

我正在使用 mongo 聚合。

当地时区为EST (UTC -5),时间为08/15/16 23:00 Monday

在数据库中,是UTC时间ISODate("2016-08-16T04:00:00.000Z"),也就是星期二。

当我使用这个 MongoDB 聚合时:

Product.aggregate([
  { $group: {
    _id: {
      day: { $dayOfWeek: '$time' }
    }
  }}
])

这个时间将被添加到星期二。有没有办法让它添加到星期一?谢谢

(客户端可以向服务器发送时区偏移-5参数)

【问题讨论】:

标签: mongodb mongoose aggregation-framework


【解决方案1】:

在 Javascript 中使用以下代码:

//you get the timezone

var timeZone = new Date().getTimezoneOffset() * 60000;

将变量发送到api并在mongo中使用

例如:

//utc-5

db.orders.aggregate(
    [
     { $group: { _id: {
         "$dayOfWeek":{$add:['$time', -timeZone]}

     }, total: { $sum: "$subTotal" } } }
    ]
)

注意:时区根据情况减或加。

【讨论】:

    【解决方案2】:

    你可以试试这个。

    Product.aggregate([
      { $group: {
        _id: {
          day: { $dayOfWeek: { $add: [ "$time", 
                                    { $subtract: [ new Date( "1970-01-01T00:00:00.000Z" ), new Date( "1970-01-01T00:00:00.000" ) ] } // Time Offset 
                                    ] } }
        }
      }}
    ])    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-29
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      • 2014-08-10
      • 1970-01-01
      相关资源
      最近更新 更多