Probeer dit
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'
}
},
]);}
In uw vraag ontbraken twee dingen
1) Gebruiker-ID converteren naar mongo-object-ID, dus we gebruikten mongoose.Types.ObjectId
2) Je kunt het buitenste verzamelveld niet rechtstreeks in de binnenste pijplijn gebruiken, hiervoor heb je een tijdelijke variabele gemaakt, dus we gebruikten let
om te declareren en te matchen met het interne veld moeten we $expr
. gebruiken