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