$ dateToString和$ subString没有显示正确的日期

时间:2017-10-03 14:02:31

标签: node.js mongodb mongoose aggregation-framework

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中是否有任何方法或查询显示此日期。

1 个答案:

答案 0 :(得分:0)

您可以使用此脚本。

npm install vue-chartjs

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

  {"$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 
                                ] } } } } }