Mongo:在一个查询中获取商店中为多个用户购买的最后一件商品

时间:2018-08-24 19:00:22

标签: mongodb distinct

让我说我有一个收藏用户:

{ name: "John", id: 1 } { name: "Snow", id: 2 }

他们都是我的商店的顾客,他们购买的商品是我在另一个收藏集中的商品

{ buyer: 1, item: 'winter_clothes', date: 0001 } { buyer: 2, item: 'sword', date: 0002 } { buyer: 1, item: 'direwolf_puppy_food', date: 0002 }

(日期将是某种时间戳)

我可以通过一个查询为所有客户获得最后一次购买的商品吗?

我以为我可以使用distinct来做到这一点,但这似乎与MySQL没什么不同。

1 个答案:

答案 0 :(得分:0)

您可以使用以下聚合管道作为参考来实现您想要的目标:

db.customers.aggregate([{'$lookup':
 {
   'from': 'items',
   'localField': 'id',
   'foreignField':'buyer',
   'as': 'details'
 }},{'$unwind':'$details'},
 {'$sort':{'name':-1,'details.date':-1}},
 {'$group':{'_id':'$name','details':{'$first':'$details'}}}])