我将以下日期格式与片刻一起用于在MongoDB中保存文档的日期。问题是,MongoDB认为它以某种方式被转换了。现在,如果我想通过指定日期来获取数据,则不能使用与创建日期相同的变量。谁能告诉我我该怎么做?
const date = new Date();
const firstDay = new Date(date.getFullYear(), date.getMonth(), 1);
const startDate = moment(firstDay);
const day = startDate;
day变量在MongoDB中另存为
'Wed Jun 24 2020 00:00:00 GMT+0300'
但是,如果我尝试按日期查找文档,则实际返回的是day变量
2020-06-24T22:17:09+03:00
我想我要做的是以'Wed Jun 24 2020 00:00:00 GMT+0300'
格式返回今天的日期,并将时间设置为0,因为我只需要日期即可搜索所需的文档。
编辑:我能够使用Date而不是Momentjs。
const date = new Date();
date.setHours(0, 0, 0, 0);
console.log(date.toString().split("(Eastern European Summer Time)")[0]);
//Wed Jun 24 2020 00:00:00 GMT+0300
答案 0 :(得分:1)
您可以在聚合管道中使用$dateFromString来实现它。
您的查询可能与此类似:
db.collection.aggregate( [ {
$project: {
date: {
$dateFromString: {
dateString: '$date'
format:<formatStringExpression>
} ] )
来自MongoDB官方文档:
3.6版的新功能。
将日期/时间字符串转换为日期对象。
$ dateFromString表达式具有以下语法:
{ $dateFromString: { dateString: <dateStringExpression>, format: <formatStringExpression>, timezone: <tzExpression>, onError: <onErrorExpression>, onNull: <onNullExpression> } }
您可能还想查看聚合管道中的$dateToString,该管道提供了格式化的日期字符串
语法与上面类似:
db.collection.aggregate( [ {
$project: {
date: {
$dateToString: {
dateString: '$date'
format:<formatString>
} ] )