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