Опитайте това
const { user } = req;
productsModels.aggregate([
{ $sort: { '_id': -1 } },
{ $limit: 10 },
{
$lookup: {
from: 'likes',
let: {productId:"$_id"},
pipeline: [
{
$match: {
$expr:{$eq:['$_id', '$$productId']}},
'userId': mongoose.Type.Object(user.id)
}
}
],
as: 'liked'
}
},
]);}
В заявката ви липсват две неща
1) Конвертиране на потребителски идентификатор в идентификатор на обект mongo, така че използвахме mongoose.Types.ObjectId
2) Не можете да използвате полето за външно събиране директно във вътрешния тръбопровод, за това трябва да създадете временна променлива, така че използвахме let
за да декларираме и да съпоставим с вътрешно поле, трябва да използваме $expr