ms-dred
@ms-dred
Вечно что то не то и что то не так...

Как правильно применить lookup к массиву объектов?

Что то не так делаю, потому что на выходе получаю один лишь объект с пользовательскими данными и всё
Есть коллекция с постами в которых есть поле с комментариями, вот структура документа (схема mongoose)
{
    url: { type: String },
    comments: [{
        owner: { type: mongoose.Schema.Types.ObjectId, ref: 'Users', required: !0 },
        post: { type: String, trim: !0, required: !0 },
	public: { type: Number, default: 0 },
	createdAt: { type: Date, default: Date.now }
    }]
}


Цель простая, получить комменты и к каждому owner присвоить данные из коллекции users, вот что ХОЧУ получить:
{
    comments: [{
        owner: {
             _id: 'User ID',
             avatar: 'user avatar'
        },
        post: 'текст комментария',
        createdAt: 'тут дата создания коммента'
    }]
}


Пытаюсь делать так
Posts.aggregate([
    { $match: { url: 'url-url' } },
    {
        $lookup: {
            from: 'users',
            localField: 'comments.owner',
            foreignField: '_id',
            as: 'comments.owner'
        }
    }, {
        $project: {
            _id: 1,
            comments: 1
        }
    }
]).....

На выходе получаю не то что нужно
"comments":{  
   "owner":[  
      {  
         "_id":"54ad4806f273e66f2bfa6984",
         "username":"username",
         "avatar":"54ad4806f273e66f2bfa6984.jpg",
         "createdAt":"2013-06-16T22:11:37.000Z"
      }
   ]
}

Как правильно построить запрос?
  • Вопрос задан
  • 60 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы