Javascript 在Meteor中按日期筛选Mongo文档

Javascript 在Meteor中按日期筛选Mongo文档,javascript,mongodb,meteor,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',

此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}}});
稍后,我需要返回两个日期(如2017年3月9日)之间的文件。 正在以2017-03-09格式从客户端接收搜索字符串

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

还安装了Moment.js。我如何做到这一点,使输出格式为DD/MM/YYYY?thx

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

要使用矩实现这一点,需要将字符串解析为矩对象。这是告诉
moment
使用提供的日期创建一个日期对象,并告诉它日期的格式,以便它知道日期/月份等

const dateObj=时刻(日期,“DD/MM/YYYY”).toDate()

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

保存到数据库

myCol.update({u id:'abc',{$set:{date:dateObj}}})

然后,当您回到客户机上时,您可以再次使用矩来格式化输出日期

const formattedDate=时刻(dateFromDB).format(“DD/MM/YYYY”)


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

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

要使用矩实现这一点,需要将字符串解析为矩对象。这是告诉
moment
使用提供的日期创建一个日期对象,并告诉它日期的格式,以便它知道日期/月份等

const dateObj=时刻(日期,“DD/MM/YYYY”).toDate()

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

保存到数据库

myCol.update({u id:'abc',{$set:{date:dateObj}}})

然后,当您回到客户机上时,您可以再次使用矩来格式化输出日期

const formattedDate=时刻(dateFromDB).format(“DD/MM/YYYY”)


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

你只是想知道如何格式化你从数据库收到的日期吗?@Sean我想知道如何格式化日期,以便它在mycl.find
中工作,并且是在所需的表示格式DD/MM/YYYY中。你只是想知道如何格式化你想要的日期吗正在从数据库接收吗?@Sean我正在试图找出如何格式化日期,使其在Mycl.find中工作,并以所需的表示格式(DD/MM/YYYY)工作。我在代码中有一条旧注释,指出我不使用该时刻的原因是它与hr为14而不是00有问题,真的不确定它是否相关,只是想提一下它是否对你有意义。我注意到你的第一行代码以
dObj
作为参数。是否有一种方法可以使用包含“09/03/2017”的变量,而不是像我的代码中所说的那样,执行额外的两个步骤来获得dObj?是的,你是对的-我忙于编写解决方案,不记得放弃最初的步骤。我已经用客户端的更多信息更新了我的答案,我需要执行
myCol.find({date:{$gte:start,$lte:end}})
with
start
end
从客户端输入中以YYYY-MM-DD格式接收。所以现在mongodb find没有返回任何内容。如何解决这个问题?您还需要将客户端输入转换为日期对象<代码>时刻(clientDate,“YYYY-MM-DD”).toDate()
然后您可以使用它来查询Against我在代码中有一条旧注释,指出我没有使用时刻的原因是它与hr为14而不是00有问题,真的不确定它是否相关,如果它对你有什么意义的话,我想提一下。我注意到你的第一行代码以
dObj
为参数。是否有一种方法可以使用包含“09/03/2017”的变量,而不是像我的代码中所说的那样,执行额外的两个步骤来获得dObj?是的,你是对的-我忙于编写解决方案,不记得放弃最初的步骤。我已经用客户端的更多信息更新了我的答案,我需要执行
myCol.find({date:{$gte:start,$lte:end}})
with
start
end
从客户端输入中以YYYY-MM-DD格式接收。所以现在mongodb find没有返回任何内容。如何解决这个问题?您还需要将客户端输入转换为日期对象<代码>时刻(clientDate,“YYYY-MM-DD”).toDate()
然后您可以使用它来查询