Данные не извлекаются с использованием запроса агрегации в nodejs - PullRequest
0 голосов
/ 27 апреля 2020

Я попробовал приведенный ниже код, но проверяется и отображается только первое совпадение, другие отображаются как объект, поэтому я не вижу его в консоли. У меня есть 3 сборника ученического предмета учителя, также сделаны схемы для этого же. пробная агрегация

Student.aggregate([

            {

              $match: { name: 'abcd'}
            },

            {
            $lookup:
             {
               from:'teachers',
               pipeline: [{ $match: { name: 'pqrs' } },],
               as: "teacherLookup"

             }
            },
            {
            $lookup:
             {
               from:'subjects',
               pipeline: [{ $match: { name: 'computer' } }],
               as: "subjectLookup"
             }
            }

          ]).then(function (res) {
            console.log(res); 
            res.forEach(function(students){
              let id = students._id;
              console.log(id+ ' got id ')

            }

    output
    student 
    name:'abcd' -- its fetched and other two not displaying values only shows object
    teacherLookup: [ [Object] ]
    subjectLookup: [ [Object] ]

1 Ответ

1 голос
/ 28 апреля 2020

Вы были там, чтобы просто спроецировать что-то, что вам нужно использовать $project stage.

Здесь я добавляю запрос:

Student.aggregate([
  {
    $match: { name: 'abcd'}
  },
  {
    $lookup:{
       from:'teachers',
       pipeline: [
        { 
          $match: { name: 'pqrs' } 
        },
        {
          $project:{
            "_id":1
          }
        }
       ],
       as: "teacherLookup"
    }
  },
  {
    $lookup:
     {
       from:'subjects',
       pipeline: [
        { 
          $match: { name: 'computer' } 
        },
        {
          $project:{
            "_id":1
          }
        }
       ],
       as: "subjectLookup"
     }
  }
])

Подробнее о $project см. здесь .

Надеюсь, это поможет:)

...