如何获得今天与mongoose创build的文件数量?

如何获得今天与mongoose创build的文件数量? 我正在使用MEAN堆栈。 我读了Mongoose Api Docs,但是什么都不明白:/

默认情况下是没有办法的。

除非您明确地将其存储在MongoDB中,否则文档没有与它们关联的创builddate。

换句话说,你的Mongoose模式应该像created字段:

 const blogSchema = new Schema({ created: {type: Date, default: Date.now} }); 

然后search匹配的文档:

 const now = new Date(); const today = new Date(now.getFullYear(), now.getMonth(), now.getDate()); doc.find({created: {$gte: today}}).exec(callback); 

假设在模式中创build了date字段,并且您希望获取今天注册的用户数量,则应该在date范围查询, startdate和enddate中创build两个date对象实例。

您的startdate对象应将当前date时间小时保存为00:00:00.000 (毫秒精度),并将当天date的小时数设置为23:59:59.999enddatevariables:

 var start = new Date(); start.setHours(0,0,0,0); var end = new Date(); end.setHours(23,59,59,999); 

然后照常在$match操作符的MongoDB聚合pipe道中传递修改的date对象:

 var pipeline = [ { "$match": { "createdAt": { "$gte": start, "$lt": end } } }, { "$group": { "_id": null, "count": { "$sum": 1 } } } ]; Model.aggregate(pipeline, function (err, result){ if (err) throw new Error(); console.log(JSON.stringify(result)); }); 

如果您正在使用momentjs库,则可以通过在当前的date对象上使用startOf()endOf()方法来完成此操作,并将string'day'作为parameter passing:

 var start = moment().startOf('day'); // set to 12:00 am today var end = moment().endOf('day'); // set to 23:59 pm today