获取与日期匹配的MongoDB项目

时间:2015-04-03 17:05:33

标签: javascript mongodb date meteor

我正在尝试计算meteor-mongo匹配日期的发布项目。

我插入了我的帖子日期。

posts
  submitted: new Date()

数据库中的日期格式如下。

yyyy-mm-dd 16:16:34.317Z // I do not understand the last part (what format it is)

我试过这个来匹配date of today字段

中的submitted
var currentDate = new Date();
var dd = currentDate.getDate();
var mm = currentDate.getMonth()+1;
var yyyy = currentDate.getFullYear();
var today = yyyy+'-'+mm+'-'+dd;

Posts.find({submitted: today}).count()

但是,最后一部分是返回0

是不是因为今天的最后一个,mm,ss部分缺失了?如果是这样,我如何告诉meteor-mongo忽略日期的时间部分,以便我可以返回该计数?

3 个答案:

答案 0 :(得分:1)

您将提交的日期存储在MongoDB中,包含时间和时区信息。由于您的currentDate不包含时间信息,因此将您的submitted与Mongo中的currentDate日期进行直接比较将永远不会成立。

此外,您使用String数据类型来查询日期,由于您需要使用Date数据类型,因此也无法使用。这样的东西对你有用:

var today = new Date();
today.setHours(0, 0, 0, 0);
Posts.find({submitted: {$gt: today}})

将返回日期大于今天午夜的所有帖子。

答案 1 :(得分:1)

我不想处理JS日期对象格式,我想你也是(我不明白最后一部分(它是什么格式)

尝试momentjs packagedocumentation非常清楚。

所以在插页上你可以有类似的东西。

var today = moment().format(''MMMM Do YYYY, h:mm:ss a'); // April 3rd 2015, 12:17:06 pm
Posts.insert({subbmited:today})

并做一个简单的发现。

var endQuery = today..add('days', 3).calendar(); // just an example.
Posts.find({submitted: {$gt: today,$lt:endQuery}})

感谢@Larry Maccherone点,我们使用的是$gte(更重要)和$lt(小于),所以这就像在帖子提交日和发布提交数据+ 3天(就像你要求管理范围)

答案 2 :(得分:0)

尝试这样的事情

posts.find({"submitted": /.*today*/})