Выборка уникальных документов отсортированных по времени 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" }
}
}
])
- Сортировка по date
- Группировка по last_name и добавление первого найденного документа