mongodb 聚合 按月分组统计

news/2024/7/7 6:03:44

需求

先说下我的需求:查询用户每个月发布文章的天数,并以列表的形式返回。
举例:某用户在2020年12月份12号、8号、15号、22号曾经发布过文章,把所有发布文章的日期在数组中返回。

实现

以下是使用mongodb聚合实现命令。

[{
    $match: {
        createTime: {
            $lt: 1586044883668,
            $gt: 1581052614344
        },
        authorId: 'stff13d19c632be44781ad497afd'
    }
}, {
    $project: {
        year: {
            $year: {
                $add: [
                    ISODate('1970-01-01T00:00:00.000Z'),
                    '$createTime'
                ]
            }
        },
        month: {
            $month: {
                $add: [
                    ISODate('1970-01-01T00:00:00.000Z'),
                    '$createTime'
                ]
            }
        },
        day: {
            $dayOfMonth: {
                $add: [
                    ISODate('1970-01-01T00:00:00.000Z'),
                    '$createTime'
                ]
            }
        },
        _id: 1,
        threadId: 1
    }
}, {
    $group: {
        _id: null,
        count: {
            $sum: 1
        },
        publishDays: {
            $addToSet: '$day'
        }
    }
}]

解析:

  1. $match
    查询所有符合条件文章。
    在这里插入图片描述

  2. $project
    返回帖子id,并把创建时间格式化输出
    在这里插入图片描述

  3. $group
    分组统计,并返回
    在这里插入图片描述

PS:截图中所使用的工具,mongodb compass


http://www.niftyadmin.cn/n/3656133.html

相关文章

Tangram商业版本预览(一)

Tangram商业版本预览(一)Tangram商业版本计划于最近交付,其主要特点是包含其他版本的全部功能之外,提供一个高质量的UI定制能力,内置的Skin引擎支持多达2000多种流行的Skin,同时可以提供Microsoft Office系…

can‘t convert from BSON type long to Date

{$project: {year: {$year: "$createTime"},_id: 1,createTime: 1} }以上语句在查询mongodb时报错:cant convert from BSON type long to Date,截图如下: 原因:数据库存储的createTime为long类型,而project语句需要一个date类型&a…

Windows应用程序与配置文件

Windows应用程序与配置文件为每个应用程序提供一个配置文件已经不是什么新鲜的想法了,在早期的Windows中,许多程序通常都提供一个扩展名为“.ini”或“.dat”之类的物件以定制化程序或为应用程序提供扩展描述。Microsoft公布.NET框架后,基于W…

springboot 多个数据库配置

文章目录一、pom文件依赖二、yaml文件配置三、代码实现1、main函数配置2、创建mongodb工厂3、主数据源配置4、副数据源配置5、工具封装6、使用四、踩的坑1、MongoClientURI找不到2、找不到mongoTemplate一、pom文件依赖 <dependency><groupId>org.springframework…

为什么你的软件需要IDE特征?

为什么你的软件需要IDE特征&#xff1f;IDE&#xff0c;就是Integrated Development Environment的缩写&#xff0c;一般而言&#xff0c;只有软件开发工具或设计工具才具备IDE特征&#xff0c;之所以如此的原因之一也许是因为开发IDE特征的技术工作比较繁杂。现代应用软件由于…

mongodb 删除字段

使用springboot mongodb工具&#xff0c;删除多余字段。 1、pom文件依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>2、代码实现 topping、toppi…

关于Tangram的可视化设计支持

关于Tangram的可视化设计支持Tangram开源版本是Tangram系列中“最小”的版本&#xff0c;在这个版本中包含了Tangram的最基本的功能点&#xff0c;即软件UI框架的可视化设计。通常&#xff0c;软件开发者都是通过Coding的方式进行软件的框架设计&#xff0c;给定一个如下的UI框…