如何在聚合框架中给出完整时间戳的日期聚合?

时间:2013-03-27 11:15:10

标签: mongodb aggregation-framework

我有一组错误,因此每个错误都带有date字段。如何仅在DAY之前汇总/计算/分组错误(即排除当天的时间)?我想,应该应用一些智能投影。

3 个答案:

答案 0 :(得分:50)

您可以使用以下聚合运算符来执行此操作:

这为您提供了每个日期的错误计数:

db.errors.aggregate(
    { $group : {
        _id: {
            year : { $year : "$date" },        
            month : { $month : "$date" },        
            day : { $dayOfMonth : "$date" },
        },
        count: { $sum: 1 }
    }}
);

此示例假定错误文档中的日期字段为date且类型为BSON Date。 MongoDB中还有一个Timestamp类型,但the documentation明确表示不鼓励使用此类型:

  

注意:BSON时间戳类型用于内部MongoDB使用。对于大多数   例如,在应用程序开发中,您将需要使用BSON日期   类型。有关详细信息,请参阅日期。

答案 1 :(得分:4)

您可以使用$project (aggregation)

将时间戳字段转换为具有特定日期格式的字符串
<Label BindingContext="x:Reference slider1"  

答案 2 :(得分:3)

由于mongo 2.6已有$dateToString函数,可以像这样在package com.example.demo.ViewModels; public class StudentInfo { private String firstName; private String lastName; private String courseName; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getCourseName() { return courseName; } public void setCourseName(String courseName) { this.courseName = courseName; } } 中使用:

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public ModelAndView Index() {

       List<StudentInfo> data = studentRepository.getAll();


        return new ModelAndView("indexView", "data", data);
    }