在Meteor中按日期过滤Mongo文档

时间:2017-03-09 11:30:11

标签: javascript mongodb meteor

此Meteor服务器代码解析html并获取类似" 09/03/2017"并将其保存到mongodb集合中,如下所示:

const date = ResObj.$(this).next().html().trim();
const dArr = date.split('/');
const dObj = new Date(parseInt(dArr[2]), parseInt(dArr[1]) - 1, parseInt(dArr[0]));
myCol.update({_id:'abc', {$set:{date: dObj}}});

稍后我需要在两者之间返回文件并包括2个日期,如09/03/2017。 正在从2017-03-09格式化客户端收到搜索字符串。

myCol.find({date: {$gte: start, $lte: end}})

还安装了Moment.js。我怎么能这样做,使输出在甲酸DD / MM / YYYY? THX

1 个答案:

答案 0 :(得分:0)

您要做的是将日期存储为日期对象,这样您就可以在数据库中对其进行查询。

要使用moment执行此操作,您需要将字符串解析为moment对象。这告诉moment使用提供的日期创建日期对象并告诉它日期的格式,以便知道哪些是日期/月等。

const dateObj = moment(date, "DD/MM/YYYY").toDate()

然后,您正在使用时刻toDate()函数将其转换为可以存储在数据库中的日期对象。

将其保存到数据库

myCol.update({_id:'abc', { $set:{ date: dateObj }}});

然后,当您回到客户端时,您可以再次使用

格式化输出日期

const formattedDate = moment(dateFromDB).format("DD/MM/YYYY");

基本上,您总是希望将日期作为日期对象存储在数据库中,这样它们可以在查询和排序等中使用。您只想在客户端上使用format()将它们转换回字符串