文章目录
文章记录如何将
MongoShell
中的管道操作对应翻译为spring-boot-starter-data-mongodb
中mongoTemplate
的执行方式
首先要了解:MongoDB的聚合管道操作符分为
聚合管道阶段操作符
($addFields
,$bucket
,$count
,$group
等)官方文档地址
聚合管道运算符
($avg
,$sum
,$first
,$filter
等)官方文档地址
分别对应spring-boot-starter-data-mongodb
提供的AggregationOperation
和AggregationExpression
的实现类
掌握基本写法,只要能写出MongoShell就能轻松转换为Springboot的写法
多阶段MongoShell聚合操作示例
建议先使用MongoDB Compass软件验证聚合写法的正确性
下面Springboot的示例将此mongoshell代码转换为springboot的写法
[{
$match: {
projectId: "CS202005251234567890123456789012",
createTime:{
$gte: 1590681600000,
$lte: 1590726107317
},
reportKey:{
$in: ["ctwElectricPower", "whwElectricPower", "cwElectricPower", "chwElectricPower", "acwElectricPower", "mwElectricPower", "ctFanFrequency", "ctRunningTime", "ctNumber", "cpSwitchStatus"]
}
}
}, {
$group: {
_id: "$createTime",
data: {
$push:{
deviceId: "$deviceId",
reportKey: "$reportKey",
reportValue: "$reportValue"
}
}
}
}, {
$sort: {
_id: -1
}
}, {
$group: {
_id: null,
count: {
$sum:1
},
data:{
$push: "$$ROOT"
}
}
}, {
$project: {
_id:0,
count:1,
data:{
$slice:["$data",1,10]
}
}
}]
maven坐标
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>