我有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
在国外馆藏中的情况。
答案 0 :(得分:1)
您可以使用以下汇总
{ "$lookup": {
"from": "lists",
"let": { "id": "$_id" },
"pipeline": [
{ "$match": { "$expr": { "$in": ["$$id", "$animes.anime"] }}},
{ "$unwind": "$animes" },
{ "$match": { "$expr": { "$eq": ["$animes.anime", "$$id"] }}}
],
"as": "name"
}}