【发布时间】:2019-06-29 13:45:04
【问题描述】:
我有 2 个收藏,第一个存储每个用户观看的动漫、他们的状态等:
const listSchema = mongoose.Schema({
user: {
type: Schema.Types.ObjectId,
ref: 'user'
},
animes: [{
_id: false,
anime: {
type: Schema.Types.ObjectId,
ref: 'anime',
unique: true
},
status: String,
episodes: Number,
rating: Number
}]
});
第二个存储所有动漫和相关信息。
我想显示第二个集合,但添加从登录用户列表中填充的 status 和 episodes 字段。
我尝试了以下方法:
Anime.aggregate([
{
$lookup: {
'from': 'lists',
localField: '_id',
foreignField: 'animes.anime',
'as': 'name'
},
},
{
$unwind: '$animes'
},
{
$project:{
status:'$lists.animes.status'
}
}
]
)
但它返回一个空数组。
我也不知道如何通过userId 进行过滤,看看_id 在国外集合中的情况。
【问题讨论】:
-
因为您的
foreignField是一个数组或对象,所以您无法获取匹配的文档 -
我认为
$unwind会解决这个问题。请问有什么解决方法吗?
标签: mongodb mongoose mongodb-query aggregation-framework