我有一个名为市场的集合,我在其中存储商品的价格。我经常更新项目的值。为了跟踪所有价格,我每次更改项目的价格时都会插入一个新元组。
我的问题是:如何获取上次更新价格的不同商品清单?
示例 目前的收藏
[
{ item: 'A', timestamp: '1513555200', price: 10 },
{ item: 'B', timestamp: '1513555200', price: 50 },
{ item: 'C', timestamp: '1513555200', price: 30 },
{ item: 'A', timestamp: '1513814400', price: 14 },
{ item: 'B', timestamp: '1513814400', price: 55 },
{ item: 'A', timestamp: '1514050995', price: 15 },
{ item: 'D', timestamp: '1514050995', price: 150 },
]
期望的结果:
[
{ item: 'A', timestamp: '1514050995', price: 15 },
{ item: 'B', timestamp: '1513814400', price: 55 },
{ item: 'C', timestamp: '1513555200', price: 30 },
{ item: 'D', timestamp: '1514050995', price: 150 }
]
答案 0 :(得分:1)
查看文档,我找到了运算符$first,它提供了一个解决我问题的示例。
db.market.aggregate([
{ $sort: {item: 1, timestamp: -1} },
{ $group: {
_id: "$item",
timestamp: {$first: "$timestamp"},
price: {$first: "$price"}
}}
]);