Es stellte sich heraus, dass das Casting der ObjectId das Problem zu sein schien. Wir müssen mongoose.Types.ObjectId
verwenden
Der API-Code sieht folgendermaßen aus
getProductByProductId: function (productId) {
return new Promise((resolve, reject) => {
User.aggregate([
{
$match: {
"shops.products._id": mongoose.Types.ObjectId(productId)
}
},
{
"$unwind": "$shops"
},
{
"$unwind": "$shops.products"
},
{
$match: {
"shops.products._id": mongoose.Types.ObjectId(productId)
}
},
{
$project: {
"_id": "$shops.products._id",
"title": "$shops.products.title"
}
}
])
.then(products => {
resolve(products)
}).catch(err => {
reject(err);
});
});
}