Mongo: получить последний купленный в магазине товар для нескольких пользователей одним запросом

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

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

Вы можете легко сделать это с помощью агрегации $lookup и $sort.

Ashh 24.08.2018 21:06
Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
0
1
61
1

Ответы 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'}}}])

Другие вопросы по теме