如何从MongoDB中的列表ObjectID中搜索

时间:2019-05-13 16:40:38

标签: mongodb

我具有如下所示的“ 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循环,并将搜索键与电子邮件,电话...进行比较是很好的解决方案

1 个答案:

答案 0 :(得分:1)

您可以使用Aggregation Pipeline。首先,您在id_club$match,然后是$unwind followers$lookup个关注者,他们来自基于id_follower的收藏集中。最后,您可以使用其他阶段根据关注者的属性进行过滤。

您也可以从另一侧搜索。让您的followers收藏存储他们所属的俱乐部,并与该收藏匹配。