【问题标题】:$dateToString and $subString not showing proper date$dateToString 和 $subString 没有显示正确的日期
【发布时间】:2018-03-14 18:19:38
【问题描述】:
db.checkins.aggregate
 ([{'$match':{"checkinData.time":
                    {"$gt":ISODate("2017-08-31T18:30:00.000Z"),
                    "$lte":ISODate("2017-08-31T20:00:00.000Z")}}},

  {"$project":{'dte': {"$dateToString": 
                             {format: "%Y-%m-%d", date:"$checkinData.time"}
                      }
              }}

])

从数据库返回的数据很好,这意味着下一个日期(2017/09/01)的所有数据返回。 但问题是 “dte”字段的值显示的是上一个日期 (2017-08-31)

但我必须显示“dte”的值是下一个日期(2017-09-01)。

我用过 $dateToString$subString

{"$project":{"dte":{"$substr":["$checkinData.time",0,10]},

同样返回2017-08-31

在 mongoDB 中是否有任何方法或查询来显示下一个日期。

【问题讨论】:

    标签: node.js mongodb mongoose aggregation-framework


    【解决方案1】:

    你可以使用这个脚本。

      {"$project":{ 'dte': { "$dateToString": { format: "%Y-%m-%d", 
                            date:{ $add: [ "$checkinData.time", 
                                    { $subtract: [ new Date( "1970-01-01T00:00:00.000Z" ), new Date( "1970-01-01T00:00:00.000" ) ] } // Time Offset 
                                    ] } } } } }
    

    我刚刚在您的日期中添加了时区差异。我这样计算时间偏移量。

    $subtract: [ new Date( "1970-01-01T00:00:00.000Z" ), new Date( "1970-01-01T00:00:00.000" ) ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-12
      • 1970-01-01
      • 2015-12-03
      • 1970-01-01
      相关资源
      最近更新 更多