记一次MongoDB的aggregate使用

本文详细介绍了MongoDB中的aggregate()方法,包括聚合语法、常用聚合表达式和管道概念。通过实例展示了如何根据时间进行聚合、进行二次聚合等操作,帮助读者深入理解MongoDB的数据聚合功能。
摘要由CSDN通过智能技术生成

aggregate() 方法

MongoDB中使用**aggregate()**方法进行聚合处理,例如统计平均值,求和等操作,并返回最后的计算结果。

语法

db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
相当于SQL语句中的group By

db.collection.aggregate([
{
    $match : {< query >},
}
{
    $group: {< fieldl >: < field2 >}
}
])

Query设置统计查询的条件,类似于SQL的where。field1为分类字段,要求使用 _id 名表示分类字段。field2为包含各种统计操作符的数字类型字段。例如 $sum , $avg , $min等。

db.collection.aggregate([
{
	$group:{
		"_id" : "$name",
		"total":{
			$sum : 1
		}
	 }
}
])

相当于SQL中 :
select name as _id , count(*) as total from tableName group by name

常用聚合表达式

在这里插入图片描述

管道的概念

管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数。

MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。

表达式:处理输入文档并输出。表达式是无状态的,只能用于计算当前聚合管道的文档,不能处理其它的文档。
聚合管道方法的流程图

常用聚合操作

在这里插入图片描述

聚合实例

新建测试数据:

db.lottery_member.insert({
  "lotteryDetailsId":"2020102010","unionId":"111","name":"jz测试1","corpId":"jzCorp","type":1,"isPrize":true,"phone":"12345",
                          "receiveTime": ISODate("2020-10-20T12:01:00Z"),"isDel":0})
db.lottery_member.insert({
  "lotteryDetailsId":"2020102010","unionId":"111","name":"jz测试1","corpId":"jzCorp","type":1,"isPrize":true,"phone":"12345",
                          "receiveTime": ISODate("2020-10-20T12:02:00Z"),"isDel":0})
db.lottery_member.insert({
  "lotteryDetailsId":"2020102010","unionId":"111","name":"jz测试1","corpId":"jzCorp","type":1,"isPrize":true,"phone":"12345",
                          "receiveTime": ISODate("2020-10-20T12:03:00Z")
MongoDB中,聚合(aggregate)是一种用于处理数据的功能,可以进行各种操作,如统计平均值、求和等。其中,使用aggregate函数是最常见的方法之一。通过使用aggregate函数,您可以将一系列操作(例如,$skip、$limit、$sort等)应用于数据集合来获取您所需的结果。 例如,如果您想跳过第一个文档并限制结果为2个文档,您可以使用以下代码: db.Ubisoft.aggregate([ { $skip: 1 }, { $limit: 2 } ]) 这将返回一个包含两个文档的结果集合,其中第一个文档被跳过了。 另外,如果您想按照时间字段进行降序排序,您可以使用以下代码: db.Ubisoft.aggregate([ { $sort: { time: -1 } } ]) 这将返回一个按照时间字段降序排列的结果集合。 通过使用聚合功能,您可以根据具体需求对MongoDB中的数据进行灵活处理和操作,以满足您的统计需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MongoDB aggregate 运用篇个人总结](https://download.csdn.net/download/weixin_38590775/14837456)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [mongoDB中聚合(aggregate)的具体使用](https://blog.csdn.net/ycclydy/article/details/120861374)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值