asm*_*sma 0 javascript mongodb aggregation-framework
我有一个类似的 mongodb 集合:
{ "_id" : 1, "item" : "item1", "quantity" : 2, "date" : ISODate("2014-01-01T08:00:00Z") }
{ "_id" : 2, "item" : "item2", "quantity" : 1, "date" : ISODate("2014-02-03T09:00:00Z") }
{ "_id" : 3, "item" : "item2", "quantity" : 5, "date" : ISODate("2014-02-03T09:05:00Z") }
{ "_id" : 4, "item" : "item1", "quantity" : 10, "date" : ISODate("2014-02-15T08:00:00Z") }
{ "_id" : 5, "item" : "item2", "quantity" : 10, "date" : ISODate("2014-02-15T09:05:00Z") }
Run Code Online (Sandbox Code Playgroud)
我想获取每个项目的最新文档(基于日期值)
意味着我想要一个查询/聚合给我:
{ "_id" : 4, "item" : "item1", "quantity" : 10, "date" : ISODate("2014-02-15T08:00:00Z") }
{ "_id" : 5, "item" : "item2", "quantity" : 10, "date" : ISODate("2014-02-15T09:05:00Z") }
Run Code Online (Sandbox Code Playgroud)
$sort按date降序排列$group通过item并获取第一个根文档$replaceRoot 将根文档对象替换为根db.collection.aggregate([
{ $sort: { date: -1 } },
{
$group: {
_id: "$item",
root: { $first: "$$ROOT" }
}
},
{ $replaceRoot: { newRoot: "$root" } }
])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41 次 |
| 最近记录: |