0
0条评论

mongodb单节点等时间间隔(15分钟,1小时等)聚合查询,取每个时间间隔第一条数据,可以查询到全部数据;

查询结果展示出来是每小时第一分钟的数据,即00:00:00,01:00:00,02:00:00,03:00:00…

但是针对mongodb分片副本集,相同的查询语句,只能查到部分数据,应该是没有在全部分片中查找,

查询结果是一个小时内随机时间点的数据,如00:56:00,01:57:00,02:55:00,03:58:00…

sql语句如下

db.getCollection(“test1”).aggregate([
{ $match: { “systime”: { $gte: ‘2022-04-22 00:00:00’, $lt: ‘2022-05-15 00:00:00’ }, “datatype”: “0” } },
{ $group: { “_id”: { “$subtract”: [{ “$subtract”: [ { “$dateFromString”: { ‘dateString’: ‘$systime’ } }, new Date(“1970-01-01”) ] }, {
“$mod”: [{ “$subtract”: [ { “$dateFromString”: { ‘dateString’: ‘$systime’ } }, new Date(“1970-01-01”) ] }, 1000 * 60 *60/*聚合时间段,60分钟*/ ]
} ] },
“systime”: {‘$first’: ‘$systime’},
“有功电能”:{“$first”:”$Transformer_72eaab0e19814f4f81f69a52bad8e40f.ActivePower”},
“有功电能1”:{“$first”:”$Transformer_87361d00db444a419aa0e787e89b46b9.ActivePower”},
}
},
{“$project”: { “_id”: 0 } },
{ $sort: { ‘systime’: 1 } }
],{ allowDiskUse: true })

已回答的问题