我们有这样的事件:
{
"dateStart": "2018-04-04T08:50:42.389Z",
"machine": "Machine1",
"state": "Running"
},
{
"dateStart": "2018-04-04T09:10:00.389Z",
"machine": "Machine1",
"state": "Pause"
},
{
"dateStart": "2018-04-04T09:11:00.000Z",
"machine": "Machine1",
"state": "Running"
},
什么是MongoDB查询,用于计算Machine1处于特定日期/周/月运行状态的时间?
甚至可能吗?
由于我们处于设计阶段,因此我们对修改JSON模式持开放态度。这里重要的是能够计算事件的持续时间总和。
答案 0 :(得分:0)
您可以使用$subtract并使用$sum的$group找到两个日期之间的差异
Aggregation pipeline带来了很多pipeline operators,可以通过对我们的集合进行操作来获得所需的结果。
您需要进行一项修改,将日期以ISODate格式存储为ISODate("2018-04-04T09:11:00.000Z")
,以便您可以使用mongodb中提供的所有算术运算。
Machine1处于特定日/周/月的状态?
在汇总管道中使用$match来过滤集合中符合条件的文档
db.collection_name.aggregate([{$match:{machine:"Machine1", state:"Running"}}])