Meteorjs Mongodb如何使用momentjs查询日期

3
在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();

但结果总是等于零。

我猜想原因是moment().startOf('day')不是一个日期对象,但我不知道如何正确地查询它。

2个回答

13

您需要将moment对象转换回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

试试这个:

// 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();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接