如何在MongoDB中按日期分组

时间:2017-05-22 16:12:33

标签: node.js mongodb express

我希望创建一个时间线REST api,它将拉取MongoDB数据条目并使用我在集合中创建的created_at属性来组织它们。

我希望将"时间线"几个不同分组的参赛作品。

第一个分组将是"过去24小时",第二个分组将是"昨天",第三个分组将是"上周"和最后的分组将是"其他一切"。我将限制其他一切"所以它很久以前就不会有很多东西......

我在Mongoose做的是一个MongoDB $组,我的created_at分组,但我遇到了问题,因为我只想做一个created_at"喜欢"因为我无法使用确切的时间戳或分组无法正常工作。

有没有人有类似的经历?我怎样才能扩展为使用多个分组,我可以先按"今天" (过去24小时),然后按周划分其他所有内容或"上周"?

我需要先做一个小组,然后在下一个分组中排除以前的分组结果。

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

为什么不将它分成三个查询? 今天的第一个查询:

   var today = new Date();
   var startOfToday = new Date(today.getFullYear(), today.getMonth(), today.getDate());
   MyModel.find({created_on: {$gte: startOfToday}}, function (err, docs) { ... });

昨天的第二次查询:

   var yesterday = new Date();    
   yesterday = yesterday.setDate(today.getDate() - 1);
   var startOfYesterday = new Date(yesterday.getFullYear(), yesterday.getMonth(), yesterday.getDate());
   MyModel.find({created_on: {$gte: startOfYesterday, $lt: startOfToday}}, function (err, docs) { ... });

第三个查询其他任何内容:

   MyModel.find({created_on: {$lt: startOfYesterday}}, function (err, docs) { ... });