如何在MongoDB / Mongoose中找到所有最新的不同元组

时间:2017-12-23 17:49:31

标签: mongodb

我有一个名为市场的集合,我在其中存储商品的价格。我经常更新项目的值。为了跟踪所有价格,我每次更改项目的价格时都会插入一个新元组。

我的问题是:如何获取上次更新价格的不同商品清单?

示例 目前的收藏

[
  { 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 }
]

1 个答案:

答案 0 :(得分:1)

查看文档,我找到了运算符$first,它提供了一个解决我问题的示例。

db.market.aggregate([
  { $sort: {item: 1, timestamp: -1} },
  { $group: {
    _id: "$item",
    timestamp: {$first: "$timestamp"},
    price: {$first: "$price"}
  }}
]);