让我说我有一个收藏用户:
{ 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没什么不同。
答案 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'}}}])