Prova detta
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'
}
},
]);}
I din fråga saknas två saker
1) Konvertera användar-id till mongo objekt-id så vi använde mongoose.Types.ObjectId
2) Du kan inte använda yttre samlingsfält direkt i den inre pipeline för detta, du har skapat temp variabel så vi använde let
för att deklarera och matcha med internt fält måste vi använda $expr