mongodb的分组求和(使⽤aggregate⽅法)mongo的分组求和⽬录
etc是什么意思
anti是什么意思1、mongo脚本语句的分组求和
mongo⽂档集合结构:
脚本如下:
$match: {
'org_id': "a024db93c3b311e9a9bc98039b473960",
'status': 0,
'date': {
$gte: ISODate("2019-07-01 00:00:00"),
$lt: ISODate("2019-08-01 00:00:00")
}
}
}, {
撒播$group: {
"_id": {
cloup"org_id": "$_id_id",
"date": "$_id.date"
},
"total": {
2009年四级成绩查询
"$sum": "$fans_number"
}
2011年12月四级真题}
}, {
$project: {
"_id": 0,
"total": 1
}
}])
解读:
(1)match:查询的筛选条件
(2)group:
1)_id:分组的字段
2)total:所要取的聚合函数
[1] $sum:表⽰求和的聚合函数
(3)project:查询后的显⽰字段,0:表⽰不显⽰;1:表⽰显⽰2、java中的spring-data-mongodb分组求和
注意点:
(1)0要使⽤该管道⽅法,spring-data-mongodb 必须 是 1.10.10 版本以上dome
(2)mongo数据库存储的是⽂档,就像java的.class⽂件;故⽽建议字段多单词时,使⽤驼峰命名
(3)在此⽅法中,需特别注意的是字段映射问题,建议 java对象和mongo数据库 均 使⽤驼峰命名法(以避免映射问题)
结果如下:
解读:
prince什么意思
(1)Aggregation.match(Criteria语句):存放的是条件,类似于MySQL中的where语句
(2)up(String… key):参数表⽰ 可变多参数 ,指的是分组参数或分组多参数
(3)up(String… key).sum(字段名).as(别名):如同MySQL中的聚合函数与别名,需要 ⼀起使⽤
(4)up(String… key):与MySQL相同, 如果不是分组参数,在查询的字段中就
⼀定要是聚合函数;否则报错 。亦可 将其余要的字段当做分组参数 (即多分组参数)
(5)Aggregation.project(String… 别名):可变多参数,将 group⽅法⾥的聚合函数别名 放于此,表明查询出所要的聚合函数
注意: 在mongo中,分组求和时,会将 分组参数的值赋给mongo数据库⾃动⽣成的_id字段 ,表⽰ 唯⼀值
(1)如果直接使⽤Aggregation.project(String key, String… 别名)的形式,实际上的 key值会在_id字段 ,⽽ key字段为null (2)Aggregation.project(String… 别名).and(String 别名).previousOperation():表⽰ 将_id字段的值赋给前⾯and()中的别名
(3)⼀旦 分组参数有多个 ,_id 将会采⽤ json的格式 , 包含多个 参数字段;故⽽使⽤第⼆点时,and()中的 别名也将会是json格式 (多个参数字段);如: and()中的别名 = _id = {key1: “key1”, key2: “key2”}
(4)Aggregation.project(String… 别名).andInclude(String key1).andInclude(String key2):表⽰查询出所要的分组参数(其中的 key1、key2应当是group() 中的分组字段);实际上就是 相当于 key1 = _id.key1 = “key1”;key2 = _id.key2 = "key2"
deeply