需求:传输设备编号,时间间隔和多个数据下标查询数据,单个Temperature的Array中有11w个温度数据,全部查出来再去取不现实,MongoTemplate中未提供$map和$arrayElemAt的使用方法。
代码:利用MongoDB的SQl查询已实现。
db.temperatureAndPic.aggregate([
{
$match : {
number : "3",
insertDate : {
$gte:ISODate("2021-11-22T11:10:00Z"),
$lt:ISODate("2021-11-22T12:09:59Z")
}
}
},
{
$project : {
number : 1,
insertDate : 1,
temperature : {
$map : {
input : [0,200,400,500,600],
as : "index",
in : {
$arrayElemAt : ["$temperature", "$$index"]
}
}
}
}
},
{
$sort : {
insertDate:1
}
}
]);
查询出来的结果如下图:
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。