1

ユーザー セッションを追跡するためのコレクションを作成しました。ログイン時間に応じて、各ユーザーの最後のセッションを取得したい。私のコレクションにいくつかのドキュメントがあるとします。

{
    "_id" : BinData(3,"LkNkGFrvldtTyHmLp5CirA=="),
    "createdTime" : ISODate("2017-09-22T06:37:17.620Z"),
    "userName" : "testUser1",
    "loggedOnDuration" : NumberLong(10),
    "loginTime" : ISODate("2017-09-22T06:37:17.620Z"),
    "logoutTime" : ISODate("2017-09-23T06:37:17.620Z"),
}
{
    "_id" : BinData(3,"B0R7SkeZ30rCjsp/Kftphw=="),
    "createdTime" : ISODate("2017-09-22T06:42:17.620Z"),
    "userName" : "testUser1",
    "loggedOnDuration" : NumberLong(10),
    "loginTime" : ISODate("2017-09-22T06:42:17.620Z"),
    "logoutTime" : ISODate("2017-09-23T06:37:17.620Z"),
}
{
    "_id" : BinData(3,"B0R7SkeZ30rCjsp/Kftphw=="),
    "createdTime" : ISODate("2017-09-22T06:45:17.620Z"),
    "userName" : "testUser2",
    "loggedOnDuration" : NumberLong(10),
    "loginTime" : ISODate("2017-09-22T06:45:17.620Z"),
    "logoutTime" : ISODate("2017-09-23T06:37:17.620Z"),
}
{
    "_id" : BinData(3,"B0R7SkeZ30rCjsp/Kftphw=="),
    "createdTime" : ISODate("2017-09-24T06:50:17.620Z"),
    "userName" : "testUser2",
    "loggedOnDuration" : NumberLong(10),
    "loginTime" : ISODate("2017-09-24T06:50:17.620Z"),
    "logoutTime" : ISODate("2017-09-24T06:59:17.620Z"),
}

最大のcreatedTimeを持つユーザーごとに1つのドキュメントを取得したいだけです。出力は次のようになります-

{
    "_id" : BinData(3,"B0R7SkeZ30rCjsp/Kftphw=="),
    "createdTime" : ISODate("2017-09-22T06:42:17.620Z"),
    "userName" : "testUser1",
    "loggedOnDuration" : NumberLong(10),
    "loginTime" : ISODate("2017-09-22T06:42:17.620Z"),
    "logoutTime" : ISODate("2017-09-23T06:37:17.620Z"),
}
{
    "_id" : BinData(3,"B0R7SkeZ30rCjsp/Kftphw=="),
    "createdTime" : ISODate("2017-09-24T06:50:17.620Z"),
    "userName" : "testUser2",
    "loggedOnDuration" : NumberLong(10),
    "loginTime" : ISODate("2017-09-24T06:50:17.620Z"),
    "logoutTime" : ISODate("2017-09-24T06:59:17.620Z"),
}

MongoDB 操作に MongoCollection クラスを使用しています。MongoCollection ライブラリを使用してこの出力を取得するにはどうすればよいですか?

4

3 に答える 3