【问题标题】:Mongo: Get last item bought in store for multiple users in one queryMongo:在一次查询中获取多个用户在商店购买的最后一件商品
【发布时间】:2018-08-24 19:00:21
【问题描述】:

假设我有一个集合用户:

{ 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 中做的不一样。

【问题讨论】:

  • 您可以使用$lookup$sort 聚合轻松做到这一点

标签: mongodb distinct


【解决方案1】:

您可以使用以下聚合管道作为参考来实现您正在寻找的内容:

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'}}}])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 2019-01-08
    • 1970-01-01
    相关资源
    最近更新 更多