Монго: Получить последний товар, купленный в магазине для нескольких пользователей в одном запросе - PullRequest
0 голосов
/ 24 августа 2018

Допустим, у меня есть коллекция пользователей:

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

(дата будет какой-то меткой времени)

Могу ли я одним запросом, чтобы все мои клиенты получили последний купленный товар?

Я думал, что смогу сделать это с отличным , но, похоже, это не то же самое, что в MySQL.

1 Ответ

0 голосов
/ 24 августа 2018

Вы можете использовать приведенный ниже конвейер агрегации в качестве эталона для достижения того, что вы ищете:

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