次のことを想像してください。
{
"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秒ですが、簡単にするためにそれらを除外することを考えています.