Versuchen Sie dies
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 Ihrer Abfrage fehlten zwei Dinge
1) Konvertieren der Benutzer-ID in die Mongo-Objekt-ID, also haben wir mongoose.Types.ObjectId verwendet
2) Sie können das äußere Sammlungsfeld nicht direkt in der inneren Pipeline verwenden, dafür müssen Sie eine temporäre Variable erstellen, also haben wir let verwendet zum Deklarieren und Abgleichen mit dem internen Feld müssen wir $expr verwenden