Как использовать $ lookup в mongodb для получения данных из этой таблицы, которая соединяется с другой таблицей - PullRequest
0 голосов
/ 11 июля 2019

У меня есть 2 схемы, как показано ниже:

Схема сообщения:

let schema = {

id: "post",

свойства: {

content: {type: "string", по умолчанию: ''},

автор: {

тип: "объект",

id: {type: "object"},

аватар: {тип: "строка"},

firstName: {тип: "строка"},

lastName: {тип: "строка"},

статус: {тип: "строка"}

},

хэштег: {тип: 'строка'},

категория: {

тип: "объект",

id: {type: "object"},

name: {type: "string"}

},

изображений: {

тип: "массив",

предметов: {

тип: "объект",

свойства: {

filePath: {type: "string"},

sort: {type: 'string'},

}

}

},

}; * * тысяча шестьдесят-один


Схема отчета:

let schema = {

id: "report",

свойства: {

репортер: {

тип: "объект",

userId: {type: "object"},

firstName: {тип: "строка"},

lastName: {тип: "строка"},

статус: {тип: "строка"}

},

to: {

тип: "объект",

id: {type: "object", ref: 'post'},

typeObject: {type: "string"}

},

reportType: {type: "string"}, // SPAM || FAKE ..

content: {type: "string"}

}

введите описание изображения здесь

Как я могу использовать $ lookup или $ populate для получения данных из таблицы post так, чтобы: post._id = report.to.id Я пишу так, он возвращает неправильно, как требуется:

findPromise = model.aggregate ([

    { $lookup:{from:"reports",localField:"_id", foreignField:"to.id", as:"res"}},
    {
      $match: query,
    },
    { $skip: skip },
    { $limit: pageSize * 1 },

  ])

Пожалуйста, помогите мне, Спасибо всем.

1 Ответ

0 голосов
/ 11 июля 2019

Ваш запрос верен, просто убедитесь, что typeof как внешнего, так и локального поля одинаковы.

...