【发布时间】:2020-07-18 17:49:16
【问题描述】:
我正在尝试获得电影的结果 + 每部电影的平均评分。 信息位于两个不同的集合中。评分集合保存电影 ID。
电影 - 主要收藏
[
{
name: "The Matrix"
genres: [
"5e80bc463c410a7291dee8c1",
"5e80bc463c410a7291dee8c2"
],
},
{
name: "The Matrix 2"
genres: [
"5e80bc463c410a7291dee8c1",
"5e80bc463c410a7291dee8c2"
],
}
]
评分
[
{
movie: "5e3355c206c7cd030e48b8bc",
user: "5e3355c206c7cd030e48b8b4",
rating: 10
},
{
movie: "5e3355c206c7cd030e48b34c",
user: "5e3355c206c7cd030e48b544",
rating: 7
},
{
movie: "5e3355c206c7cd030e4823bc",
user: "5e3355c206c7cd03344823bc",
rating: 5
}
}
我想要以下结果:
{
"total": 1,
"page": 0,
"perPage": 25,
"pageSize": 1,
"movies": [
{
_id: "5e3b0e57870c15002e29a238",
name: 'The Matrix',
genres: ['Action', 'Sci-Fi'],
rating: 10
},
{
_id: "5e3b0e57870c15002e29a239",
name: 'The Matrix 2',
genres: ['Action', 'Sci-Fi'],
rating: 10
},
]
}
我不明白如何将每部电影的平均评分添加到查询结果中。 我当前的查询如下所示:
Movie.find(demand)
.select("name genres")
.skip(page * limit)
.limit(limit)
.populate('genres', ['name'])
.lean()
.exec((err, movies) => {
if (err) {
return res.json(err);
}
Movie.countDocuments(demand).exec((count_error, count) => {
if (err) {
return res.json(count_error);
}
return res.status(200).json({
total: count,
page: page,
perPage: limit,
pageSize: movies.length,
movies: movies
});
});
});
【问题讨论】: