如何获得今天与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范围查询, start
date和end
date中创build两个date对象实例。
您的start
date对象应将当前date时间小时保存为00:00:00.000
(毫秒精度),并将当天date的小时数设置为23:59:59.999
到end
datevariables:
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