我具有如下所示的“ ClubFollower”架构:
const ClubFollower = new Schema({
id_club:{
required:true,
type:String,
trim:true,
unique:true
},
followers:[
{
_id:false,
id_follower:ObjectId("xxxxxxxxxxxx"),
follower_type:String // 'club' | 'user'
}
]
});
每个关注者都有很多信息,例如:姓名,电话,电子邮件等...问题是如何使用此模式按名称,电话,电子邮件...搜索关注者。我不认为将所有项依次放在跟随者数组中,然后将findById
与每个id_follower
循环,并将搜索键与电子邮件,电话...进行比较是很好的解决方案
答案 0 :(得分:1)
您可以使用Aggregation Pipeline。首先,您在id_club
上$match,然后是$unwind followers
和$lookup个关注者,他们来自基于id_follower
的收藏集中。最后,您可以使用其他阶段根据关注者的属性进行过滤。
您也可以从另一侧搜索。让您的followers
收藏存储他们所属的俱乐部,并与该收藏匹配。