我正在尝试计算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
忽略日期的时间部分,以便我可以返回该计数?
答案 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 package,documentation非常清楚。
所以在插页上你可以有类似的东西。
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*/})