Всем привет.
Есть две коллекции, при выборки с помощью aggregate, присоеденяю коллекцию с пользователем по ID
Вот так:
return Posts
.aggregate([
{ $match: request.query },
{ $sort: request.sort },
{ $skip: request.skip },
{ $limit: request.limit },
{
$lookup: {
from: 'users',
localField: 'owner',
foreignField: '_id',
as: 'owner'
}
}
])
Естественно поле owner содержить массив с объектом всех полей документа пользователя, а мне нужно всего 2 поля (_id and username)
Пишу следующее
return Posts
.aggregate([
{ $match: request.query },
{ $sort: request.sort },
{ $skip: request.skip },
{ $limit: request.limit },
{
$lookup: {
from: 'users',
localField: 'owner',
foreignField: '_id',
as: 'owner'
}
}, {
$project: {
_id: 1,
name: 1,
items: 1,
premiumAt: 1,
owner: {
_id: { $arrayElemAt: [ '$owner._id', 0 ] },
username: { $arrayElemAt: [ '$owner.username', 0 ] }
},
photos: { $arrayElemAt: [ '$photos', 0 ] },
comments: { $size: '$comments' }
}
}
])
В итоге получаю массив owner с двумя полями, но мне нужно избавиться от массива и оставить только объект. Я понимаю что через $group можно все это прогнать, но можно ли без $group обойтись в данном случае?