$ dateToString和$ subString不显示正确的date

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"} } }} ]) 

从数据库返回的数据非常好,这意味着下一个date(2017/09/01)的所有数据返回 但问题在于“dte”字段的值是显示之前的date(2017-08-31)

但是我必须显示'dte'的值是下一个date(2017-09-01)。

我用$ dateToString$ subString

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

它也同样回报2017-08-31

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

你可以使用这个脚本。

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

我刚刚添加时区的差异到你的date。 我计算了这样的时间偏移。

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