Wypróbuj to
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'
}
},
]);}
W zapytaniu brakuje dwóch rzeczy
1) Konwersja identyfikatora użytkownika na identyfikator obiektu mongo, więc użyliśmy mongoose.Types.ObjectId
2) Nie możesz użyć zewnętrznego pola kolekcji bezpośrednio w wewnętrznym potoku, ponieważ utworzyłeś zmienną temp, więc użyliśmy let
aby zadeklarować i dopasować do pola wewnętrznego musimy użyć $expr