aggregate $match $group $sum $push $$ROOT
> db.task.aggregate([{$match: {"status": {$exists: false}}}, {$group: {_id: "$status", count: {$sum: 1}, result: {$push: "$$ROOT"}}}]).pretty()
> db.task.aggregate([{$match: {"status": {$exists: true}}}, {$group: {_id: "$status", count: {$sum: 1}, result: {$push: "$$ROOT"}}}]).pretty()
> db.task.aggregate([{$match: {"status": {$exists: false}}}, {$limit: 3}, {$group: {_id: "$status", count: {$sum: 1}, result: {$push: "$$ROOT"}}}]).pretty()
> db.task.aggregate([{$match: {"status": {$exists: true}}}, {$limit: 3}, {$group: {_id: "$status", count: {$sum: 1}, result: {$push: "$$ROOT"}}}]).pretty()
计算季度 & 按季度分组统计
计算季度:
db.task.aggregate([{ $match: { "createDate": {$ne: null} } }, { $project: { status: 1, createDate: 1, quarter: { $cond: { if: { $gte: [{ $month: "$createDate" }, 10] }, then: "Q4", else: { $cond: { if: { $gte: [{ $month: "$createDate" }, 7] }, then: "Q3", else: { $cond: { if: { $gte: [{ $month: "$createDate" }, 4] }, then: "Q2", else: "Q1" } } } } } } } }])
按季度分组统计:
db.task.aggregate([{ $match: { "createDate": {$ne: null} } }, { $project: { status: 1, createDate: 1, quarter: { $cond: { if: { $gte: [{ $month: "$createDate" }, 10] }, then: "Q4", else: { $cond: { if: { $gte: [{ $month: "$createDate" }, 7] }, then: "Q3", else: { $cond: { if: { $gte: [{ $month: "$createDate" }, 4] }, then: "Q2", else: "Q1" } } } } } } } }, { $group: { _id: {"year": {"$year": "$createDate"}, quarter: "$quarter", status: "$status"}, count: { $sum: 1 } } }, { $sort : {"_id.year" : -1, "_id.quarter": -1, "_id.status": -1} }])
MongoDimensionAbstractService dm = new MongoDimensionAbstractService() { @Override public Aggregation newAggregation() { Date start = null; Date end = null; if (request != null) { start = request.getStart(); end = request.getEnd(); } // Criteria criteria = new Criteria(); Criteria criteria = Criteria.where("createDate").ne(null); if (start != null || end != null) { if (start != null) { criteria.gte(start); } if (end != null) { criteria.lte(end); } } MatchOperation match = Aggregation.match(criteria); ProjectionOperation projection = Aggregation.project("_id", "status", "createDate"); DBObject asObject = projection.toDBObject(Aggregation.DEFAULT_CONTEXT); ProjectionOperation.ProjectionOperationBuilder projectionOperationBuilder = projection.and("quarter"); DateOperators.Month month = DateOperators.Month.monthOf("createDate"); ComparisonOperators.Gte gte = ComparisonOperators.Gte.valueOf(month); gte = gte.greaterThanEqualToValue(10); ConditionalOperators.ConditionalOperatorFactory conditionalOperatorFactory = ConditionalOperators.when(gte); ConditionalOperators.Cond.OtherwiseBuilder otherwiseBuilder4 = conditionalOperatorFactory.then("Q4"); gte = ComparisonOperators.Gte.valueOf(month); gte = gte.greaterThanEqualToValue(7); conditionalOperatorFactory = ConditionalOperators.when(gte); ConditionalOperators.Cond.OtherwiseBuilder otherwiseBuilder3 = conditionalOperatorFactory.then("Q3"); gte = ComparisonOperators.Gte.valueOf(month); gte = gte.greaterThanEqualToValue(4); conditionalOperatorFactory = ConditionalOperators.when(gte); ConditionalOperators.Cond.OtherwiseBuilder otherwiseBuilder2 = conditionalOperatorFactory.then("Q2"); projection = projectionOperationBuilder.applyCondition(otherwiseBuilder4.otherwiseValueOf(otherwiseBuilder3.otherwiseValueOf(otherwiseBuilder2.otherwise("Q1")))); DefaultAggregationOperation group = getDefaultAggregationOperationForReleaseStatusStatsAsQuarterly(); SortOperation sort = Aggregation.sort(Sort.Direction.DESC, "_id.year", "_id.quarter", "_id.status"); // SortOperation sort = Aggregation.sort(Sort.Direction.DESC, "_id"); Aggregation aggregation = Aggregation.newAggregation(match, projection, group, sort);//aggregation.withOptions(AggregationOptions); return aggregation; } };
相关推荐
sudo vim /etc/yum.repos.d/mongodb-org-4.2.repo 写入: [mongodb-org-4.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ gpgcheck=1 enabled=1 gpg...
MongoDB是一种流行的开源、分布式文档数据库,常被用于构建高性能、可扩展的应用程序。这个“mongodb-测试数据”压缩包显然包含了一些用于测试MongoDB功能的样例数据集,特别是针对增、删、改、查(CRUD)操作的学习...
/usr/local/mongodb/mongodb-linux-2.0.7/bin/mongod --dbpath=/usr/local/mongodb/data/db --logpath=/usr/local/mongodb/mongodb-linux-2.0.7/logs/mongodb.log --logappend --port=27017 --fork 知识点 6:配置...
Spring Data MongoDB是一个强大的Java库,它为开发人员提供了一种简单的方式来访问和操作MongoDB数据库。这个库是Spring Data框架的一部分,旨在简化数据访问层的实现,尤其在使用NoSQL数据库如MongoDB时。MongoDB...
MongoDB 实验报告 本实验报告旨在详细介绍 MongoDB 的安装、配置和基本操作步骤,本报告基于 CentOS 7 系统,通过一步一步的截图和文字说明,帮助读者快速掌握 MongoDB 的使用。 一、安装 MongoDB 首先,我们需要...
MongoDB 是一个流行的开源、基于分布式文件存储的数据库系统,主要设计用于处理大量数据的分布式环境。C# 驱动是 MongoDB 提供的一种客户端库,允许 .NET 开发者与 MongoDB 数据库进行交互。标题提到的是 MongoDB 的...
MongoDB之conf配置文件详解 MongoDB的配置文件是服务器的核心组件之一,它控制着MongoDB服务器的各种设置和行为。在本文中,我们将详细介绍MongoDB的配置文件的各个部分,并解释每个设置的作用和意义。 一、数据库...
MongoDB是一个开源、分布式、高性能的NoSQL数据库,以其灵活性、可扩展性和高可用性而闻名。`mongodb.dll`是MongoDB数据库系统在Windows平台上运行所必需的一个动态链接库(DLL)文件,它包含了MongoDB客户端和...
Geoserver发布MongoDB矢量数据地图服务 Geoserver是一款功能强大且开源的地理信息系统(GIS)服务器,能够实现空间数据的存储、处理和发布。MongoDB是一款NoSQL数据库,能够存储大量的矢量数据。本文将介绍如何使用...
资源名称:MongoDB应用设计模式内容简介:无论是在构建社交媒体网站,还是在开发一个仅在内部使用的企业应用程序,《MongoDB应用设计模式》展示了MongoDB需要解决的商业问题之间的连接。你将学到如何把MongoDB设计...
MongoDB Community Server(mongodb-org-server_5.0.4_amd64.deb)适用于适用于Debian10 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是...
MongoDB是一款高性能、无模式的分布式文档型数据库,被广泛应用于大数据分析、内容管理系统、物联网(IoT)、实时应用程序和地理位置数据存储等场景。在Linux环境下安装MongoDB 4.2.21版本,是许多系统管理员和开发者...
MongoDB是一款开源、分布式、高性能的NoSQL数据库,它不使用传统的表格和列式结构来存储数据,而是采用键值对、文档、集合和图形数据模型。这种设计使得MongoDB在处理非结构化和半结构化数据时表现出色,特别适合大...
MongoDB Community Server(mongodb-linux-aarch64-ubuntu1804-5.0.8.tgz)适用于Ubuntu 18.04 Arm芯片, MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决...
MongoDB是一个流行的开源、分布式文档型数据库,设计用于处理大量数据并提供高可用性和高性能。在Java应用程序中,为了与MongoDB进行交互,我们需要使用Java MongoDB驱动程序。这个压缩包包含的就是Java连接MongoDB...
MongoDB Community Server(mongodb-src-r5.0.4.tar.gz)源代码 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非...
MongoDB是一种流行的开源、分布式文档型数据库,以其灵活性、高性能和可伸缩性而闻名。在C#开发环境中,MongoDB提供了专门的C#驱动程序,使得开发者能够方便地与MongoDB进行交互。本篇文章将深入探讨MongoDB的C#驱动...
MongoDB 是一个流行的开源文档型数据库,被广泛用于存储、管理和检索非结构化或半结构化数据。在本文中,我们将深入探讨如何在基于ARM架构的Ubuntu 18.04系统上安装和使用MongoDB。 一、ARM架构与Ubuntu 18.04 ARM...
MongoDB是一种分布式文档数据库,以其灵活性、高性能和可伸缩性而闻名,尤其适用于处理大量半结构化和非结构化数据。MongoDB Day 2015 深圳活动显然是一个专门针对MongoDB技术的研讨会或会议,旨在深入探讨和分享...
MongoDB是一款开源、高性能、无模式的文档型数据库,它在现代应用程序开发中扮演着重要的角色,特别是在处理大量非结构化数据时。针对"mongodb Windows7 64位"这个主题,我们将深入探讨MongoDB在Windows 7 64位操作...