我有2个收藏集:电影和用户。在电影中,我保存了有关电影的信息,例如在电影中播放的演员的明星。我将此字段另存为电影收藏中的数组。现在我想编写一个返回星号名称的查询。但是此名称字段保存在用户集合中。如何从另一个集合中提取数据到该集合?我编写了此函数,但是它是错误的,stars_doc为空。 这是我的功能:
async function starsActMostMovies(){
const res = await Movie.aggregate([
{
$unwind: '$stars'
}
,
{
$lookup:
{
from: "User",
localField: "_id",
foreignField : "stars",
as: "stars_doc"
}
}
,
{
$group: {
_id : '$stars' ,
count : { $sum : 1}
}
}
,
{$sort: {count: -1}}
])
return res
}
starsActMostMovies().then(function(result){
console.log(result)})
在this link中,我编写了数据库模型。
答案 0 :(得分:0)
查看数据库模型,我认为电影模式定义中的引用字符串可能不正确。在电影模式中,您具有:
stars:[{
type: Schema.Types.ObjectId,
ref: 'userSchema'
}],
但是您的用户模型定义为:
var User = mongoose.model('user', userSchema);
电影模式中的ref
必须引用您为用户模型提供的名称,在这种情况下,该名称为'user'
而不是userSchema