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)
but I have to show value of 'dte' is next date (2017-09-01).
我用过$dateToString 和$subString
{"$project":{"dte":{"$substr":["$checkinData.time",0,10]},
它也同样返回 2017-08-31
Is there any method or query in mongoDB to show next date for this.
最佳答案
你可以使用这个脚本。
{"$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" ) ]
关于node.js - $dateToString 和 $subString 没有显示正确的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46546504/