[英]How can we find the recent record from each group in mongodb?
我想找出每個組的最新記錄。 我的收藏:-
{ "_id" : ObjectId("1"), "loginID" : Ram.1234@gmail.com , "name" : Ram, "date" : ISODate("2017-02-01T00:00:00Z"),Site:blog.com,opertion:modified }
{ "_id" : ObjectId("2"), "loginID" : Arjun34@gmail.com, "name" : Arjun, "date" : ISODate("2017-02-01T00:00:00Z").site:ketanblog.com,opertion:updated }
{ "_id" : ObjectId("3"), "loginID" :Ram.1234@gmail.com , "name" : Ram, "date" : ISODate("2017-02-03T00:00:00Z"),Site:blogtec.com,opertion:modified }
{ "_id" : ObjectId("4"), "loginID" : Arjun34@gmail.com, "name" : Arjun, "date" : ISODate("2017-02-08T00:00:00Z"),Site:blogpec.com,opertion:updated }
{ "_id" : ObjectId("5"), "loginID" : Arjun34@gmail.com, "name" : Arjun, "date" : ISODate("2017-02-07T00:00:00Z") ,Site:blog.com,opertion:read}
{ "_id" : ObjectId("6"), "loginID" : shyam78@gmail.com, "name" : Shyam, "date" : ISODate("2017-02-09T00:00:00Z"),site:ketanblog.com,opertion:deleted }
{ "_id" : ObjectId("7"), "loginID" : shyam78@gmail.com, "name" : Shyam, "date" : ISODate("2017-02-03T00:00:00Z") ,site:ketanblog.com,opertion:updated}
{ "_id" : ObjectId("8"), "loginID" : Arjun34@gmail.com, "name" : Arjun, "date" : ISODate("2017-02-03T00:00:00Z"),Site:blogtrt.com,opertion:read }
我預期的 output:-
{ "_id" : ObjectId("3"), "loginID" : Ram.1234@gmail.com, "name" : Ram, "date" : ISODate("2017-02-03T00:00:00Z"),Site:blogtec.com,opertion:modified }
{ "_id" : ObjectId("4"), "loginID" : Arjun34@gmail.com, "name" : Arjun, "date" : ISODate("2017-02-08T00:00:00Z"),Site:blogpec.com,opertion:updated }
{ "_id" : ObjectId("6"), "loginID" : shyam78@gmail.com, "name" : Shyam, "date" : ISODate("2017-02-09T00:00:00Z"),Site:ketanblog.com,opertion:deleted }
db.coll.aggregate([
{
$sort : {"$date": - 1}
},
{
$group: {
_id : "$loginID",
data : {
$first : "$$ROOT"
}
}
}
])
你可以試試,
$sort
按日期降序排序$group
by loginID
並在recent
添加第一個最近的文檔$replaceRoot
將recent
的替換為新的根$sort
新的分組文檔db.collection.aggregate([
{ $sort: { date: -1 } },
{
$group: {
_id: "$loginID",
recent: { $first: "$$ROOT" }
}
},
{ $replaceRoot: { newRoot: "$recent" } },
{ $sort: { date: -1 } }
])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.