想象一下:
{
"user" : "john",
"type" : "connect",
"created" : ISODate("2015-10-02T10:00:00.000Z"),
"__v" : 0
},
{
"user" : "john",
"type" : "disconnect",
"created" : ISODate("2015-10-02T10:10:00.000Z"),
"__v" : 0
},
{
"user" : "frank",
"type" : "connect",
"created" : ISODate("2015-10-02T10:05:00.000Z"),
"__v" : 0
},
{
"user" : "frank",
"type" : "disconnect",
"created" : ISODate("2015-10-02T10:15:00.000Z"),
"__v" : 0
},
{
"user" : "john",
"type" : "connect",
"created" : ISODate("2015-10-02T10:15:00.000Z"),
"__v" : 0
}
我想创建一个中断报告,告诉“用户 john 有 5 分钟的停机时间”。我现在完全处于黑暗之中,我深入研究了聚合以及 mapReduce,但似乎没有任何东西指向我需要它的方向。我可以使用普通的 javascript 来解决它,但我想避免这种情况,因为 MongoDB 是为这些类型的聚合而设计的。也许我只是陷入困境,需要让它休息一段时间,但也许有人对我有一个很好的解决方案。
所以最好的输出是(我猜):
{
"user" : "john",
"outage": "5"
}
除了这个“最佳”示例之外,在部署新服务器版本时,系统可能会吞下断开连接。这些大约是 10 秒,为了方便起见,我正在考虑将它们排除在外。