Выборка уникальных документов отсортированных по времени MongoDb Driver C#

Имеется коллекция документов следующего вида:

{
    "_id" : ObjectId("abcd123"),
        "user_name" : "My Name",
        "last_name" : "Name",
        "date" : ISODate("2015-11-20T14:56:57.165Z")
}

Нужно получить List документов, у которых будет уникальный "last_name", а также самая свежая "date".


Например есть следующая коллекция:

{
    "_id" : "abcd1235",
        "user_name" : "Michael",
        "last_name" : "Gregor",
        "date" : "2015-11-20T14:52:57.165Z"
},
{
    "_id" : "abcd123",
        "user_name" : "Tom",
        "last_name" : "Jenkins",
        "date" : "2015-11-20T14:56:57.165Z"
},
{
    "_id" : "abcd1235",
        "user_name" : "Bill",
        "last_name" : "Gregor",
        "date" : "2015-11-20T14:56:57.165Z"
},
{
    "_id" : "abcd1234",
        "user_name" : "Jonh",
        "last_name" : "Jenkins",
        "date" : "2015-11-20T14:58:57.165Z"
}

Необходимый результат:

{
    "_id" : "abcd1235",
        "user_name" : "Bill",
        "last_name" : "Gregor",
        "date" : "2015-11-20T14:56:57.165Z"
},
{
    "_id" : "abcd1234",
        "user_name" : "Jonh",
        "last_name" : "Jenkins",
        "date" : "2015-11-20T14:58:57.165Z"
}

Как получить такой результат с помощью MongoDb Driver.


Ответы (1 шт):

Автор решения: Tema K
db.users.aggregate([
{ $sort: { "date": -1} },
{ $group : { 
    _id: "$last_name", 
    user: { $first: "$$ROOT" } 
    } 
}
])
  1. Сортировка по date
  2. Группировка по last_name и добавление первого найденного документа
→ Ссылка