我实际上是想从1/4小时的数据中解析出mongo数据库中的数据,并且有多个设备可以将相同设备的数据发送回去。
所以我实际上是根据序列号和条目以及ISOdate进行匹配的汇总,
再加上一个使用开关的组,将每个1/4小时存储在正确的位置,但是我也想获得每个设备的最小值,因此对于相同的1/4,我可以拥有n个差异值。
$ match:
'sn':{'$ in':['sn1','sn2']},
'entry':{'$ in':[0,1,2,3,4]},
'dt':{'$ gte':ISODate(“ 2019-01-23T00:00:00.000 + 0000”),'$ lt':ISODate(“ 2019-01-24T00:00:00.000 + 0000” )}
$ group:
_id:{ 'entry':'$ entry', 'dt':{ '$ switch':{ “分支机构”:[ {'case':{'$ lte':['$ dt',ISODate(“ 2019-01-23T00:15:00.000 + 0000”)]},'then':ISODate(“ 2019-01-23T00:15 :00.000 + 0000“)},
{'case':{'$ lte':['$ dt',ISODate(“ 2019-01-23T00:30:00.000 + 0000”)]},'then':ISODate(“ 2019-01- 23T00:30:00.000 + 0000“)},
{'case':{'$ lte':['$ dt',ISODate(“ 2019-01-23T00:45:00.000 + 0000”)]},'then':ISODate(“ 2019-01- 23T00:45:00.000 + 0000“)},
{'case':{'$ lte':['$ dt',ISODate(“ 2019-01-23T00:00:00.000 + 0000”)]},'then':ISODate(“ 2019-01- 23T01:00:00.000 + 0000“)},
{'case':{'$ lte':['$ dt',ISODate(“ 2019-01-23T01:15:00.000 + 0000”)]},'then':ISODate(“ 2019-01- 23T01:15:00.000 + 0000“)},
{'case':{'$ lte':['$ dt',ISODate(“ 2019-01-23T01:30:00.000 + 0000”)]},'then':ISODate(“ 2019-01- 23T01:30:00.000 + 0000“)},
{'case':{'$ gte':['$ dt',ISODate(“ 2019-01-23T01:30:00.000 + 0000”)]},'then':ISODate(“ 2019-01- 23T02:00:00.000 + 0000“)}, ] }
}
}, 值:{'$ min':'$ value'}
我的预期结果,我想添加的内容如下:
_id: 条目”:NumberInt(3), “ dt”:ISODate(“ 2019-01-23T02:00:00.000 + 0000”)
valuesn1:1 值SN2:0, 平均SNS:0.5,
我真的不知道是否可行,我尝试进行尽可能少的后期处理,这是一种方法吗?
谢谢。