Meteorjs Mongodb如何用momentjs查询日期

时间:2014-06-11 19:09:17

标签: mongodb meteor momentjs

在Meteor中,我以这种方式创建了一个获胜者文档:

var winner = {
                participant_id: array[randomIndex]["_id"], //don't worry about the array[randomIndex]
                creation_date: new Date()
            };
id = Winners.insert(winner);

后来,我想知道我今天有多少获奖者。我尝试了很多方法,但是我无法获得正确的结果。

我尝试的最后一件事就是这个:

Winners.find({creation_date: {"$gte": moment().startOf('day'), "$lt": moment().add('days',1)}}).count();

但结果总是等于零。

我想原因是那一刻()。startOf(' day')不是日期对象,但我不知道如何以正确的方式查询它。

2 个答案:

答案 0 :(得分:13)

您需要将时刻对象转换回Date,以便meteor / mongo可以处理查询。您可以通过附加呼叫toDate来实现这一点:

var startDate = moment().startOf('day').toDate();
var endDate = moment().add('days',1).toDate();
Winners.find({creation_date: {$gte: startDate, $lt: endDate}}).count();

答案 1 :(得分:1)

试试这个:

// the number of milliseconds since 1970/01/01:
creation_date:new Date().getTime()

// you can still use moment:
moment().startOf('day').valueOf()

// query:
Winners.find({
   creation_date: {
     "$gte": moment().startOf('day').valueOf(),
     "$lt":  moment().add('days',1).valueOf()
   }
}).count();