我有一个错误集合,所以每个错误都有一个date字段.如何仅按天汇总/计数/分组错误(即排除一天中的时间)?我想,应该应用一些智能投影.

推荐答案

可以通过使用以下聚合运算符来实现这一点:

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

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

本例假设错误文档中的日期字段为date,类型为BSON Date.MongoDB中还有一种时间戳类型,但the documentation明确禁止使用这种类型:

注意:BSON时间戳类型供MongoDB内部使用.对大多数人来说

Mongodb相关问答推荐

如何将空值单独分组?

MongoDB聚合如何对对象数组中的值求和

如何使用mongodb进行离线开发?

Mongo 将一个数组链接到另一个数组

MongoDB查询优化

Mongo按最大分组排序

Mongoose 聚合和多级组

Golang:如何判断 collection.Find 是否没有找到任何文件?

在golang中的mongodb中的集合列表中打印集合

MongoDB:插入重复键更新

MongoDB 的 BinData(0, "e8MEnzZoFyMmD7WSHdNrFJyEk8M=") 中的0是什么意思?

mongodb 模式设计命名约定

使用 MongoDB 进行分页

MongoDB - 清除嵌套数组中的元素

使用管道聚合的 Spring Data MongoDB 查找

Mongodb 约定包

MongoDB 3 Java判断集合是否存在

C# MongoDB 驱动程序 - 如何使用 UpdateDefinitionBuilder?

mongo中的稀疏索引和空值

将日期从毫秒转换为 ISODate 对象