Как сделать зависимость массива объектов в mongoose?

У меня есть схема объекта страны, которая выглядит так:

{
    name: 'Japan',
    id: 1,
    ...
    cities: [
        some data...
    ]
}

и схема города с ссылкой на страну (countryId)

{
    name: 'City Test'
    countryId: 1
    id: some data...
}

На выходе я хочу получить список стран в которых в поле cities буду готовые объекты привязанные к странам. Как я могу это реализовать?


Ответы (1 шт):

Автор решения: Dmitriy Grape

В MongoDB за подобные объединения коллекций отвечает $lookUp, mongoose также предоставляет удобный интерфейс для этого.

Для этого, в схеме страны для поля cities определите свойства localField, foreignField и ref.

const countrySchema = new Schema({
  ...
  cities: [{ ref: 'название модели города', localField: 'id', foreignField: 'countryId' }]
});

Далее, при каждом find запросе вызывайте метод .populate('cities').

→ Ссылка