我在聚合管道中使用 $match 。当我没有在 $match 中传递查询时,它会打印空数组。但我想要 $match 中存在空查询时的所有数据。同时如果查询不匹配,那么它应该打印空数组。如何做到这一点?.
export const getMovies = async (req, res) => {
const actorname = req.query.name
const genrename = req.query.genre
const movies = await Movie.aggregate(
[
{ $addFields: { genre: '$genres' } },
{ $match: { name: actorname } },
{ $unwind: "$genre" },
{
$group: {
_id: '$genre',
movieCount: { $sum: 1 },
movies: {
$push:
{
movie: "$movie",
genre: "$genres",
name: "$name",
rating: "$rating"
}
}
}
},
{ $addFields: { genre: '$_id' } },
{ $project: { _id: 0 } },
{ $match: { genre: genrename } }
]
)
res.status(200).json({ movies })}